1*d83cc019SAndroid Build Coastguard Worker /* 2*d83cc019SAndroid Build Coastguard Worker * Copyright (c) 2007 Dave Airlie <[email protected]> 3*d83cc019SAndroid Build Coastguard Worker * Copyright (c) 2007 Jakob Bornecrantz <[email protected]> 4*d83cc019SAndroid Build Coastguard Worker * Copyright (c) 2008 Red Hat Inc. 5*d83cc019SAndroid Build Coastguard Worker * Copyright (c) 2007-2008 Tungsten Graphics, Inc., Cedar Park, TX., USA 6*d83cc019SAndroid Build Coastguard Worker * Copyright (c) 2007-2008 Intel Corporation 7*d83cc019SAndroid Build Coastguard Worker * 8*d83cc019SAndroid Build Coastguard Worker * Permission is hereby granted, free of charge, to any person obtaining a 9*d83cc019SAndroid Build Coastguard Worker * copy of this software and associated documentation files (the "Software"), 10*d83cc019SAndroid Build Coastguard Worker * to deal in the Software without restriction, including without limitation 11*d83cc019SAndroid Build Coastguard Worker * the rights to use, copy, modify, merge, publish, distribute, sublicense, 12*d83cc019SAndroid Build Coastguard Worker * and/or sell copies of the Software, and to permit persons to whom the 13*d83cc019SAndroid Build Coastguard Worker * Software is furnished to do so, subject to the following conditions: 14*d83cc019SAndroid Build Coastguard Worker * 15*d83cc019SAndroid Build Coastguard Worker * The above copyright notice and this permission notice shall be included in 16*d83cc019SAndroid Build Coastguard Worker * all copies or substantial portions of the Software. 17*d83cc019SAndroid Build Coastguard Worker * 18*d83cc019SAndroid Build Coastguard Worker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19*d83cc019SAndroid Build Coastguard Worker * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20*d83cc019SAndroid Build Coastguard Worker * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21*d83cc019SAndroid Build Coastguard Worker * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22*d83cc019SAndroid Build Coastguard Worker * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 23*d83cc019SAndroid Build Coastguard Worker * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 24*d83cc019SAndroid Build Coastguard Worker * IN THE SOFTWARE. 25*d83cc019SAndroid Build Coastguard Worker */ 26*d83cc019SAndroid Build Coastguard Worker 27*d83cc019SAndroid Build Coastguard Worker #ifndef _DRM_MODE_H 28*d83cc019SAndroid Build Coastguard Worker #define _DRM_MODE_H 29*d83cc019SAndroid Build Coastguard Worker 30*d83cc019SAndroid Build Coastguard Worker #include "drm.h" 31*d83cc019SAndroid Build Coastguard Worker 32*d83cc019SAndroid Build Coastguard Worker #if defined(__cplusplus) 33*d83cc019SAndroid Build Coastguard Worker extern "C" { 34*d83cc019SAndroid Build Coastguard Worker #endif 35*d83cc019SAndroid Build Coastguard Worker 36*d83cc019SAndroid Build Coastguard Worker #define DRM_DISPLAY_INFO_LEN 32 37*d83cc019SAndroid Build Coastguard Worker #define DRM_CONNECTOR_NAME_LEN 32 38*d83cc019SAndroid Build Coastguard Worker #define DRM_DISPLAY_MODE_LEN 32 39*d83cc019SAndroid Build Coastguard Worker #define DRM_PROP_NAME_LEN 32 40*d83cc019SAndroid Build Coastguard Worker 41*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_TYPE_BUILTIN (1<<0) /* deprecated */ 42*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_TYPE_CLOCK_C ((1<<1) | DRM_MODE_TYPE_BUILTIN) /* deprecated */ 43*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_TYPE_CRTC_C ((1<<2) | DRM_MODE_TYPE_BUILTIN) /* deprecated */ 44*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_TYPE_PREFERRED (1<<3) 45*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_TYPE_DEFAULT (1<<4) /* deprecated */ 46*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_TYPE_USERDEF (1<<5) 47*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_TYPE_DRIVER (1<<6) 48*d83cc019SAndroid Build Coastguard Worker 49*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_TYPE_ALL (DRM_MODE_TYPE_PREFERRED | \ 50*d83cc019SAndroid Build Coastguard Worker DRM_MODE_TYPE_USERDEF | \ 51*d83cc019SAndroid Build Coastguard Worker DRM_MODE_TYPE_DRIVER) 52*d83cc019SAndroid Build Coastguard Worker 53*d83cc019SAndroid Build Coastguard Worker /* Video mode flags */ 54*d83cc019SAndroid Build Coastguard Worker /* bit compatible with the xrandr RR_ definitions (bits 0-13) 55*d83cc019SAndroid Build Coastguard Worker * 56*d83cc019SAndroid Build Coastguard Worker * ABI warning: Existing userspace really expects 57*d83cc019SAndroid Build Coastguard Worker * the mode flags to match the xrandr definitions. Any 58*d83cc019SAndroid Build Coastguard Worker * changes that don't match the xrandr definitions will 59*d83cc019SAndroid Build Coastguard Worker * likely need a new client cap or some other mechanism 60*d83cc019SAndroid Build Coastguard Worker * to avoid breaking existing userspace. This includes 61*d83cc019SAndroid Build Coastguard Worker * allocating new flags in the previously unused bits! 62*d83cc019SAndroid Build Coastguard Worker */ 63*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FLAG_PHSYNC (1<<0) 64*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FLAG_NHSYNC (1<<1) 65*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FLAG_PVSYNC (1<<2) 66*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FLAG_NVSYNC (1<<3) 67*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FLAG_INTERLACE (1<<4) 68*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FLAG_DBLSCAN (1<<5) 69*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FLAG_CSYNC (1<<6) 70*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FLAG_PCSYNC (1<<7) 71*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FLAG_NCSYNC (1<<8) 72*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FLAG_HSKEW (1<<9) /* hskew provided */ 73*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FLAG_BCAST (1<<10) /* deprecated */ 74*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FLAG_PIXMUX (1<<11) /* deprecated */ 75*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FLAG_DBLCLK (1<<12) 76*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FLAG_CLKDIV2 (1<<13) 77*d83cc019SAndroid Build Coastguard Worker /* 78*d83cc019SAndroid Build Coastguard Worker * When adding a new stereo mode don't forget to adjust DRM_MODE_FLAGS_3D_MAX 79*d83cc019SAndroid Build Coastguard Worker * (define not exposed to user space). 80*d83cc019SAndroid Build Coastguard Worker */ 81*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FLAG_3D_MASK (0x1f<<14) 82*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FLAG_3D_NONE (0<<14) 83*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FLAG_3D_FRAME_PACKING (1<<14) 84*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FLAG_3D_FIELD_ALTERNATIVE (2<<14) 85*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FLAG_3D_LINE_ALTERNATIVE (3<<14) 86*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FLAG_3D_SIDE_BY_SIDE_FULL (4<<14) 87*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FLAG_3D_L_DEPTH (5<<14) 88*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FLAG_3D_L_DEPTH_GFX_GFX_DEPTH (6<<14) 89*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FLAG_3D_TOP_AND_BOTTOM (7<<14) 90*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FLAG_3D_SIDE_BY_SIDE_HALF (8<<14) 91*d83cc019SAndroid Build Coastguard Worker 92*d83cc019SAndroid Build Coastguard Worker /* Picture aspect ratio options */ 93*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_PICTURE_ASPECT_NONE 0 94*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_PICTURE_ASPECT_4_3 1 95*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_PICTURE_ASPECT_16_9 2 96*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_PICTURE_ASPECT_64_27 3 97*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_PICTURE_ASPECT_256_135 4 98*d83cc019SAndroid Build Coastguard Worker 99*d83cc019SAndroid Build Coastguard Worker /* Content type options */ 100*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_CONTENT_TYPE_NO_DATA 0 101*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_CONTENT_TYPE_GRAPHICS 1 102*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_CONTENT_TYPE_PHOTO 2 103*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_CONTENT_TYPE_CINEMA 3 104*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_CONTENT_TYPE_GAME 4 105*d83cc019SAndroid Build Coastguard Worker 106*d83cc019SAndroid Build Coastguard Worker /* Aspect ratio flag bitmask (4 bits 22:19) */ 107*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FLAG_PIC_AR_MASK (0x0F<<19) 108*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FLAG_PIC_AR_NONE \ 109*d83cc019SAndroid Build Coastguard Worker (DRM_MODE_PICTURE_ASPECT_NONE<<19) 110*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FLAG_PIC_AR_4_3 \ 111*d83cc019SAndroid Build Coastguard Worker (DRM_MODE_PICTURE_ASPECT_4_3<<19) 112*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FLAG_PIC_AR_16_9 \ 113*d83cc019SAndroid Build Coastguard Worker (DRM_MODE_PICTURE_ASPECT_16_9<<19) 114*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FLAG_PIC_AR_64_27 \ 115*d83cc019SAndroid Build Coastguard Worker (DRM_MODE_PICTURE_ASPECT_64_27<<19) 116*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FLAG_PIC_AR_256_135 \ 117*d83cc019SAndroid Build Coastguard Worker (DRM_MODE_PICTURE_ASPECT_256_135<<19) 118*d83cc019SAndroid Build Coastguard Worker 119*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FLAG_ALL (DRM_MODE_FLAG_PHSYNC | \ 120*d83cc019SAndroid Build Coastguard Worker DRM_MODE_FLAG_NHSYNC | \ 121*d83cc019SAndroid Build Coastguard Worker DRM_MODE_FLAG_PVSYNC | \ 122*d83cc019SAndroid Build Coastguard Worker DRM_MODE_FLAG_NVSYNC | \ 123*d83cc019SAndroid Build Coastguard Worker DRM_MODE_FLAG_INTERLACE | \ 124*d83cc019SAndroid Build Coastguard Worker DRM_MODE_FLAG_DBLSCAN | \ 125*d83cc019SAndroid Build Coastguard Worker DRM_MODE_FLAG_CSYNC | \ 126*d83cc019SAndroid Build Coastguard Worker DRM_MODE_FLAG_PCSYNC | \ 127*d83cc019SAndroid Build Coastguard Worker DRM_MODE_FLAG_NCSYNC | \ 128*d83cc019SAndroid Build Coastguard Worker DRM_MODE_FLAG_HSKEW | \ 129*d83cc019SAndroid Build Coastguard Worker DRM_MODE_FLAG_DBLCLK | \ 130*d83cc019SAndroid Build Coastguard Worker DRM_MODE_FLAG_CLKDIV2 | \ 131*d83cc019SAndroid Build Coastguard Worker DRM_MODE_FLAG_3D_MASK) 132*d83cc019SAndroid Build Coastguard Worker 133*d83cc019SAndroid Build Coastguard Worker /* DPMS flags */ 134*d83cc019SAndroid Build Coastguard Worker /* bit compatible with the xorg definitions. */ 135*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_DPMS_ON 0 136*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_DPMS_STANDBY 1 137*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_DPMS_SUSPEND 2 138*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_DPMS_OFF 3 139*d83cc019SAndroid Build Coastguard Worker 140*d83cc019SAndroid Build Coastguard Worker /* Scaling mode options */ 141*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_SCALE_NONE 0 /* Unmodified timing (display or 142*d83cc019SAndroid Build Coastguard Worker software can still scale) */ 143*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_SCALE_FULLSCREEN 1 /* Full screen, ignore aspect */ 144*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_SCALE_CENTER 2 /* Centered, no scaling */ 145*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_SCALE_ASPECT 3 /* Full screen, preserve aspect */ 146*d83cc019SAndroid Build Coastguard Worker 147*d83cc019SAndroid Build Coastguard Worker /* Dithering mode options */ 148*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_DITHERING_OFF 0 149*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_DITHERING_ON 1 150*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_DITHERING_AUTO 2 151*d83cc019SAndroid Build Coastguard Worker 152*d83cc019SAndroid Build Coastguard Worker /* Dirty info options */ 153*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_DIRTY_OFF 0 154*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_DIRTY_ON 1 155*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_DIRTY_ANNOTATE 2 156*d83cc019SAndroid Build Coastguard Worker 157*d83cc019SAndroid Build Coastguard Worker /* Link Status options */ 158*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_LINK_STATUS_GOOD 0 159*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_LINK_STATUS_BAD 1 160*d83cc019SAndroid Build Coastguard Worker 161*d83cc019SAndroid Build Coastguard Worker /* 162*d83cc019SAndroid Build Coastguard Worker * DRM_MODE_ROTATE_<degrees> 163*d83cc019SAndroid Build Coastguard Worker * 164*d83cc019SAndroid Build Coastguard Worker * Signals that a drm plane is been rotated <degrees> degrees in counter 165*d83cc019SAndroid Build Coastguard Worker * clockwise direction. 166*d83cc019SAndroid Build Coastguard Worker * 167*d83cc019SAndroid Build Coastguard Worker * This define is provided as a convenience, looking up the property id 168*d83cc019SAndroid Build Coastguard Worker * using the name->prop id lookup is the preferred method. 169*d83cc019SAndroid Build Coastguard Worker */ 170*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_ROTATE_0 (1<<0) 171*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_ROTATE_90 (1<<1) 172*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_ROTATE_180 (1<<2) 173*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_ROTATE_270 (1<<3) 174*d83cc019SAndroid Build Coastguard Worker 175*d83cc019SAndroid Build Coastguard Worker /* 176*d83cc019SAndroid Build Coastguard Worker * DRM_MODE_ROTATE_MASK 177*d83cc019SAndroid Build Coastguard Worker * 178*d83cc019SAndroid Build Coastguard Worker * Bitmask used to look for drm plane rotations. 179*d83cc019SAndroid Build Coastguard Worker */ 180*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_ROTATE_MASK (\ 181*d83cc019SAndroid Build Coastguard Worker DRM_MODE_ROTATE_0 | \ 182*d83cc019SAndroid Build Coastguard Worker DRM_MODE_ROTATE_90 | \ 183*d83cc019SAndroid Build Coastguard Worker DRM_MODE_ROTATE_180 | \ 184*d83cc019SAndroid Build Coastguard Worker DRM_MODE_ROTATE_270) 185*d83cc019SAndroid Build Coastguard Worker 186*d83cc019SAndroid Build Coastguard Worker /* 187*d83cc019SAndroid Build Coastguard Worker * DRM_MODE_REFLECT_<axis> 188*d83cc019SAndroid Build Coastguard Worker * 189*d83cc019SAndroid Build Coastguard Worker * Signals that the contents of a drm plane is reflected along the <axis> axis, 190*d83cc019SAndroid Build Coastguard Worker * in the same way as mirroring. 191*d83cc019SAndroid Build Coastguard Worker * See kerneldoc chapter "Plane Composition Properties" for more details. 192*d83cc019SAndroid Build Coastguard Worker * 193*d83cc019SAndroid Build Coastguard Worker * This define is provided as a convenience, looking up the property id 194*d83cc019SAndroid Build Coastguard Worker * using the name->prop id lookup is the preferred method. 195*d83cc019SAndroid Build Coastguard Worker */ 196*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_REFLECT_X (1<<4) 197*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_REFLECT_Y (1<<5) 198*d83cc019SAndroid Build Coastguard Worker 199*d83cc019SAndroid Build Coastguard Worker /* 200*d83cc019SAndroid Build Coastguard Worker * DRM_MODE_REFLECT_MASK 201*d83cc019SAndroid Build Coastguard Worker * 202*d83cc019SAndroid Build Coastguard Worker * Bitmask used to look for drm plane reflections. 203*d83cc019SAndroid Build Coastguard Worker */ 204*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_REFLECT_MASK (\ 205*d83cc019SAndroid Build Coastguard Worker DRM_MODE_REFLECT_X | \ 206*d83cc019SAndroid Build Coastguard Worker DRM_MODE_REFLECT_Y) 207*d83cc019SAndroid Build Coastguard Worker 208*d83cc019SAndroid Build Coastguard Worker /* Content Protection Flags */ 209*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_CONTENT_PROTECTION_UNDESIRED 0 210*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_CONTENT_PROTECTION_DESIRED 1 211*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_CONTENT_PROTECTION_ENABLED 2 212*d83cc019SAndroid Build Coastguard Worker 213*d83cc019SAndroid Build Coastguard Worker struct drm_mode_modeinfo { 214*d83cc019SAndroid Build Coastguard Worker __u32 clock; 215*d83cc019SAndroid Build Coastguard Worker __u16 hdisplay; 216*d83cc019SAndroid Build Coastguard Worker __u16 hsync_start; 217*d83cc019SAndroid Build Coastguard Worker __u16 hsync_end; 218*d83cc019SAndroid Build Coastguard Worker __u16 htotal; 219*d83cc019SAndroid Build Coastguard Worker __u16 hskew; 220*d83cc019SAndroid Build Coastguard Worker __u16 vdisplay; 221*d83cc019SAndroid Build Coastguard Worker __u16 vsync_start; 222*d83cc019SAndroid Build Coastguard Worker __u16 vsync_end; 223*d83cc019SAndroid Build Coastguard Worker __u16 vtotal; 224*d83cc019SAndroid Build Coastguard Worker __u16 vscan; 225*d83cc019SAndroid Build Coastguard Worker 226*d83cc019SAndroid Build Coastguard Worker __u32 vrefresh; 227*d83cc019SAndroid Build Coastguard Worker 228*d83cc019SAndroid Build Coastguard Worker __u32 flags; 229*d83cc019SAndroid Build Coastguard Worker __u32 type; 230*d83cc019SAndroid Build Coastguard Worker char name[DRM_DISPLAY_MODE_LEN]; 231*d83cc019SAndroid Build Coastguard Worker }; 232*d83cc019SAndroid Build Coastguard Worker 233*d83cc019SAndroid Build Coastguard Worker struct drm_mode_card_res { 234*d83cc019SAndroid Build Coastguard Worker __u64 fb_id_ptr; 235*d83cc019SAndroid Build Coastguard Worker __u64 crtc_id_ptr; 236*d83cc019SAndroid Build Coastguard Worker __u64 connector_id_ptr; 237*d83cc019SAndroid Build Coastguard Worker __u64 encoder_id_ptr; 238*d83cc019SAndroid Build Coastguard Worker __u32 count_fbs; 239*d83cc019SAndroid Build Coastguard Worker __u32 count_crtcs; 240*d83cc019SAndroid Build Coastguard Worker __u32 count_connectors; 241*d83cc019SAndroid Build Coastguard Worker __u32 count_encoders; 242*d83cc019SAndroid Build Coastguard Worker __u32 min_width; 243*d83cc019SAndroid Build Coastguard Worker __u32 max_width; 244*d83cc019SAndroid Build Coastguard Worker __u32 min_height; 245*d83cc019SAndroid Build Coastguard Worker __u32 max_height; 246*d83cc019SAndroid Build Coastguard Worker }; 247*d83cc019SAndroid Build Coastguard Worker 248*d83cc019SAndroid Build Coastguard Worker struct drm_mode_crtc { 249*d83cc019SAndroid Build Coastguard Worker __u64 set_connectors_ptr; 250*d83cc019SAndroid Build Coastguard Worker __u32 count_connectors; 251*d83cc019SAndroid Build Coastguard Worker 252*d83cc019SAndroid Build Coastguard Worker __u32 crtc_id; /**< Id */ 253*d83cc019SAndroid Build Coastguard Worker __u32 fb_id; /**< Id of framebuffer */ 254*d83cc019SAndroid Build Coastguard Worker 255*d83cc019SAndroid Build Coastguard Worker __u32 x; /**< x Position on the framebuffer */ 256*d83cc019SAndroid Build Coastguard Worker __u32 y; /**< y Position on the framebuffer */ 257*d83cc019SAndroid Build Coastguard Worker 258*d83cc019SAndroid Build Coastguard Worker __u32 gamma_size; 259*d83cc019SAndroid Build Coastguard Worker __u32 mode_valid; 260*d83cc019SAndroid Build Coastguard Worker struct drm_mode_modeinfo mode; 261*d83cc019SAndroid Build Coastguard Worker }; 262*d83cc019SAndroid Build Coastguard Worker 263*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_PRESENT_TOP_FIELD (1<<0) 264*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_PRESENT_BOTTOM_FIELD (1<<1) 265*d83cc019SAndroid Build Coastguard Worker 266*d83cc019SAndroid Build Coastguard Worker /* Planes blend with or override other bits on the CRTC */ 267*d83cc019SAndroid Build Coastguard Worker struct drm_mode_set_plane { 268*d83cc019SAndroid Build Coastguard Worker __u32 plane_id; 269*d83cc019SAndroid Build Coastguard Worker __u32 crtc_id; 270*d83cc019SAndroid Build Coastguard Worker __u32 fb_id; /* fb object contains surface format type */ 271*d83cc019SAndroid Build Coastguard Worker __u32 flags; /* see above flags */ 272*d83cc019SAndroid Build Coastguard Worker 273*d83cc019SAndroid Build Coastguard Worker /* Signed dest location allows it to be partially off screen */ 274*d83cc019SAndroid Build Coastguard Worker __s32 crtc_x; 275*d83cc019SAndroid Build Coastguard Worker __s32 crtc_y; 276*d83cc019SAndroid Build Coastguard Worker __u32 crtc_w; 277*d83cc019SAndroid Build Coastguard Worker __u32 crtc_h; 278*d83cc019SAndroid Build Coastguard Worker 279*d83cc019SAndroid Build Coastguard Worker /* Source values are 16.16 fixed point */ 280*d83cc019SAndroid Build Coastguard Worker __u32 src_x; 281*d83cc019SAndroid Build Coastguard Worker __u32 src_y; 282*d83cc019SAndroid Build Coastguard Worker __u32 src_h; 283*d83cc019SAndroid Build Coastguard Worker __u32 src_w; 284*d83cc019SAndroid Build Coastguard Worker }; 285*d83cc019SAndroid Build Coastguard Worker 286*d83cc019SAndroid Build Coastguard Worker struct drm_mode_get_plane { 287*d83cc019SAndroid Build Coastguard Worker __u32 plane_id; 288*d83cc019SAndroid Build Coastguard Worker 289*d83cc019SAndroid Build Coastguard Worker __u32 crtc_id; 290*d83cc019SAndroid Build Coastguard Worker __u32 fb_id; 291*d83cc019SAndroid Build Coastguard Worker 292*d83cc019SAndroid Build Coastguard Worker __u32 possible_crtcs; 293*d83cc019SAndroid Build Coastguard Worker __u32 gamma_size; 294*d83cc019SAndroid Build Coastguard Worker 295*d83cc019SAndroid Build Coastguard Worker __u32 count_format_types; 296*d83cc019SAndroid Build Coastguard Worker __u64 format_type_ptr; 297*d83cc019SAndroid Build Coastguard Worker }; 298*d83cc019SAndroid Build Coastguard Worker 299*d83cc019SAndroid Build Coastguard Worker struct drm_mode_get_plane_res { 300*d83cc019SAndroid Build Coastguard Worker __u64 plane_id_ptr; 301*d83cc019SAndroid Build Coastguard Worker __u32 count_planes; 302*d83cc019SAndroid Build Coastguard Worker }; 303*d83cc019SAndroid Build Coastguard Worker 304*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_ENCODER_NONE 0 305*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_ENCODER_DAC 1 306*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_ENCODER_TMDS 2 307*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_ENCODER_LVDS 3 308*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_ENCODER_TVDAC 4 309*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_ENCODER_VIRTUAL 5 310*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_ENCODER_DSI 6 311*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_ENCODER_DPMST 7 312*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_ENCODER_DPI 8 313*d83cc019SAndroid Build Coastguard Worker 314*d83cc019SAndroid Build Coastguard Worker struct drm_mode_get_encoder { 315*d83cc019SAndroid Build Coastguard Worker __u32 encoder_id; 316*d83cc019SAndroid Build Coastguard Worker __u32 encoder_type; 317*d83cc019SAndroid Build Coastguard Worker 318*d83cc019SAndroid Build Coastguard Worker __u32 crtc_id; /**< Id of crtc */ 319*d83cc019SAndroid Build Coastguard Worker 320*d83cc019SAndroid Build Coastguard Worker __u32 possible_crtcs; 321*d83cc019SAndroid Build Coastguard Worker __u32 possible_clones; 322*d83cc019SAndroid Build Coastguard Worker }; 323*d83cc019SAndroid Build Coastguard Worker 324*d83cc019SAndroid Build Coastguard Worker /* This is for connectors with multiple signal types. */ 325*d83cc019SAndroid Build Coastguard Worker /* Try to match DRM_MODE_CONNECTOR_X as closely as possible. */ 326*d83cc019SAndroid Build Coastguard Worker enum drm_mode_subconnector { 327*d83cc019SAndroid Build Coastguard Worker DRM_MODE_SUBCONNECTOR_Automatic = 0, 328*d83cc019SAndroid Build Coastguard Worker DRM_MODE_SUBCONNECTOR_Unknown = 0, 329*d83cc019SAndroid Build Coastguard Worker DRM_MODE_SUBCONNECTOR_DVID = 3, 330*d83cc019SAndroid Build Coastguard Worker DRM_MODE_SUBCONNECTOR_DVIA = 4, 331*d83cc019SAndroid Build Coastguard Worker DRM_MODE_SUBCONNECTOR_Composite = 5, 332*d83cc019SAndroid Build Coastguard Worker DRM_MODE_SUBCONNECTOR_SVIDEO = 6, 333*d83cc019SAndroid Build Coastguard Worker DRM_MODE_SUBCONNECTOR_Component = 8, 334*d83cc019SAndroid Build Coastguard Worker DRM_MODE_SUBCONNECTOR_SCART = 9, 335*d83cc019SAndroid Build Coastguard Worker }; 336*d83cc019SAndroid Build Coastguard Worker 337*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_CONNECTOR_Unknown 0 338*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_CONNECTOR_VGA 1 339*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_CONNECTOR_DVII 2 340*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_CONNECTOR_DVID 3 341*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_CONNECTOR_DVIA 4 342*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_CONNECTOR_Composite 5 343*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_CONNECTOR_SVIDEO 6 344*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_CONNECTOR_LVDS 7 345*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_CONNECTOR_Component 8 346*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_CONNECTOR_9PinDIN 9 347*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_CONNECTOR_DisplayPort 10 348*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_CONNECTOR_HDMIA 11 349*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_CONNECTOR_HDMIB 12 350*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_CONNECTOR_TV 13 351*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_CONNECTOR_eDP 14 352*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_CONNECTOR_VIRTUAL 15 353*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_CONNECTOR_DSI 16 354*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_CONNECTOR_DPI 17 355*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_CONNECTOR_WRITEBACK 18 356*d83cc019SAndroid Build Coastguard Worker 357*d83cc019SAndroid Build Coastguard Worker struct drm_mode_get_connector { 358*d83cc019SAndroid Build Coastguard Worker 359*d83cc019SAndroid Build Coastguard Worker __u64 encoders_ptr; 360*d83cc019SAndroid Build Coastguard Worker __u64 modes_ptr; 361*d83cc019SAndroid Build Coastguard Worker __u64 props_ptr; 362*d83cc019SAndroid Build Coastguard Worker __u64 prop_values_ptr; 363*d83cc019SAndroid Build Coastguard Worker 364*d83cc019SAndroid Build Coastguard Worker __u32 count_modes; 365*d83cc019SAndroid Build Coastguard Worker __u32 count_props; 366*d83cc019SAndroid Build Coastguard Worker __u32 count_encoders; 367*d83cc019SAndroid Build Coastguard Worker 368*d83cc019SAndroid Build Coastguard Worker __u32 encoder_id; /**< Current Encoder */ 369*d83cc019SAndroid Build Coastguard Worker __u32 connector_id; /**< Id */ 370*d83cc019SAndroid Build Coastguard Worker __u32 connector_type; 371*d83cc019SAndroid Build Coastguard Worker __u32 connector_type_id; 372*d83cc019SAndroid Build Coastguard Worker 373*d83cc019SAndroid Build Coastguard Worker __u32 connection; 374*d83cc019SAndroid Build Coastguard Worker __u32 mm_width; /**< width in millimeters */ 375*d83cc019SAndroid Build Coastguard Worker __u32 mm_height; /**< height in millimeters */ 376*d83cc019SAndroid Build Coastguard Worker __u32 subpixel; 377*d83cc019SAndroid Build Coastguard Worker 378*d83cc019SAndroid Build Coastguard Worker __u32 pad; 379*d83cc019SAndroid Build Coastguard Worker }; 380*d83cc019SAndroid Build Coastguard Worker 381*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_PROP_PENDING (1<<0) /* deprecated, do not use */ 382*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_PROP_RANGE (1<<1) 383*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_PROP_IMMUTABLE (1<<2) 384*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_PROP_ENUM (1<<3) /* enumerated type with text strings */ 385*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_PROP_BLOB (1<<4) 386*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_PROP_BITMASK (1<<5) /* bitmask of enumerated types */ 387*d83cc019SAndroid Build Coastguard Worker 388*d83cc019SAndroid Build Coastguard Worker /* non-extended types: legacy bitmask, one bit per type: */ 389*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_PROP_LEGACY_TYPE ( \ 390*d83cc019SAndroid Build Coastguard Worker DRM_MODE_PROP_RANGE | \ 391*d83cc019SAndroid Build Coastguard Worker DRM_MODE_PROP_ENUM | \ 392*d83cc019SAndroid Build Coastguard Worker DRM_MODE_PROP_BLOB | \ 393*d83cc019SAndroid Build Coastguard Worker DRM_MODE_PROP_BITMASK) 394*d83cc019SAndroid Build Coastguard Worker 395*d83cc019SAndroid Build Coastguard Worker /* extended-types: rather than continue to consume a bit per type, 396*d83cc019SAndroid Build Coastguard Worker * grab a chunk of the bits to use as integer type id. 397*d83cc019SAndroid Build Coastguard Worker */ 398*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_PROP_EXTENDED_TYPE 0x0000ffc0 399*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_PROP_TYPE(n) ((n) << 6) 400*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_PROP_OBJECT DRM_MODE_PROP_TYPE(1) 401*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_PROP_SIGNED_RANGE DRM_MODE_PROP_TYPE(2) 402*d83cc019SAndroid Build Coastguard Worker 403*d83cc019SAndroid Build Coastguard Worker /* the PROP_ATOMIC flag is used to hide properties from userspace that 404*d83cc019SAndroid Build Coastguard Worker * is not aware of atomic properties. This is mostly to work around 405*d83cc019SAndroid Build Coastguard Worker * older userspace (DDX drivers) that read/write each prop they find, 406*d83cc019SAndroid Build Coastguard Worker * witout being aware that this could be triggering a lengthy modeset. 407*d83cc019SAndroid Build Coastguard Worker */ 408*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_PROP_ATOMIC 0x80000000 409*d83cc019SAndroid Build Coastguard Worker 410*d83cc019SAndroid Build Coastguard Worker struct drm_mode_property_enum { 411*d83cc019SAndroid Build Coastguard Worker __u64 value; 412*d83cc019SAndroid Build Coastguard Worker char name[DRM_PROP_NAME_LEN]; 413*d83cc019SAndroid Build Coastguard Worker }; 414*d83cc019SAndroid Build Coastguard Worker 415*d83cc019SAndroid Build Coastguard Worker struct drm_mode_get_property { 416*d83cc019SAndroid Build Coastguard Worker __u64 values_ptr; /* values and blob lengths */ 417*d83cc019SAndroid Build Coastguard Worker __u64 enum_blob_ptr; /* enum and blob id ptrs */ 418*d83cc019SAndroid Build Coastguard Worker 419*d83cc019SAndroid Build Coastguard Worker __u32 prop_id; 420*d83cc019SAndroid Build Coastguard Worker __u32 flags; 421*d83cc019SAndroid Build Coastguard Worker char name[DRM_PROP_NAME_LEN]; 422*d83cc019SAndroid Build Coastguard Worker 423*d83cc019SAndroid Build Coastguard Worker __u32 count_values; 424*d83cc019SAndroid Build Coastguard Worker /* This is only used to count enum values, not blobs. The _blobs is 425*d83cc019SAndroid Build Coastguard Worker * simply because of a historical reason, i.e. backwards compat. */ 426*d83cc019SAndroid Build Coastguard Worker __u32 count_enum_blobs; 427*d83cc019SAndroid Build Coastguard Worker }; 428*d83cc019SAndroid Build Coastguard Worker 429*d83cc019SAndroid Build Coastguard Worker struct drm_mode_connector_set_property { 430*d83cc019SAndroid Build Coastguard Worker __u64 value; 431*d83cc019SAndroid Build Coastguard Worker __u32 prop_id; 432*d83cc019SAndroid Build Coastguard Worker __u32 connector_id; 433*d83cc019SAndroid Build Coastguard Worker }; 434*d83cc019SAndroid Build Coastguard Worker 435*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_OBJECT_CRTC 0xcccccccc 436*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_OBJECT_CONNECTOR 0xc0c0c0c0 437*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_OBJECT_ENCODER 0xe0e0e0e0 438*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_OBJECT_MODE 0xdededede 439*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_OBJECT_PROPERTY 0xb0b0b0b0 440*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_OBJECT_FB 0xfbfbfbfb 441*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_OBJECT_BLOB 0xbbbbbbbb 442*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_OBJECT_PLANE 0xeeeeeeee 443*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_OBJECT_ANY 0 444*d83cc019SAndroid Build Coastguard Worker 445*d83cc019SAndroid Build Coastguard Worker struct drm_mode_obj_get_properties { 446*d83cc019SAndroid Build Coastguard Worker __u64 props_ptr; 447*d83cc019SAndroid Build Coastguard Worker __u64 prop_values_ptr; 448*d83cc019SAndroid Build Coastguard Worker __u32 count_props; 449*d83cc019SAndroid Build Coastguard Worker __u32 obj_id; 450*d83cc019SAndroid Build Coastguard Worker __u32 obj_type; 451*d83cc019SAndroid Build Coastguard Worker }; 452*d83cc019SAndroid Build Coastguard Worker 453*d83cc019SAndroid Build Coastguard Worker struct drm_mode_obj_set_property { 454*d83cc019SAndroid Build Coastguard Worker __u64 value; 455*d83cc019SAndroid Build Coastguard Worker __u32 prop_id; 456*d83cc019SAndroid Build Coastguard Worker __u32 obj_id; 457*d83cc019SAndroid Build Coastguard Worker __u32 obj_type; 458*d83cc019SAndroid Build Coastguard Worker }; 459*d83cc019SAndroid Build Coastguard Worker 460*d83cc019SAndroid Build Coastguard Worker struct drm_mode_get_blob { 461*d83cc019SAndroid Build Coastguard Worker __u32 blob_id; 462*d83cc019SAndroid Build Coastguard Worker __u32 length; 463*d83cc019SAndroid Build Coastguard Worker __u64 data; 464*d83cc019SAndroid Build Coastguard Worker }; 465*d83cc019SAndroid Build Coastguard Worker 466*d83cc019SAndroid Build Coastguard Worker struct drm_mode_fb_cmd { 467*d83cc019SAndroid Build Coastguard Worker __u32 fb_id; 468*d83cc019SAndroid Build Coastguard Worker __u32 width; 469*d83cc019SAndroid Build Coastguard Worker __u32 height; 470*d83cc019SAndroid Build Coastguard Worker __u32 pitch; 471*d83cc019SAndroid Build Coastguard Worker __u32 bpp; 472*d83cc019SAndroid Build Coastguard Worker __u32 depth; 473*d83cc019SAndroid Build Coastguard Worker /* driver specific handle */ 474*d83cc019SAndroid Build Coastguard Worker __u32 handle; 475*d83cc019SAndroid Build Coastguard Worker }; 476*d83cc019SAndroid Build Coastguard Worker 477*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FB_INTERLACED (1<<0) /* for interlaced framebuffers */ 478*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FB_MODIFIERS (1<<1) /* enables ->modifer[] */ 479*d83cc019SAndroid Build Coastguard Worker 480*d83cc019SAndroid Build Coastguard Worker struct drm_mode_fb_cmd2 { 481*d83cc019SAndroid Build Coastguard Worker __u32 fb_id; 482*d83cc019SAndroid Build Coastguard Worker __u32 width; 483*d83cc019SAndroid Build Coastguard Worker __u32 height; 484*d83cc019SAndroid Build Coastguard Worker __u32 pixel_format; /* fourcc code from drm_fourcc.h */ 485*d83cc019SAndroid Build Coastguard Worker __u32 flags; /* see above flags */ 486*d83cc019SAndroid Build Coastguard Worker 487*d83cc019SAndroid Build Coastguard Worker /* 488*d83cc019SAndroid Build Coastguard Worker * In case of planar formats, this ioctl allows up to 4 489*d83cc019SAndroid Build Coastguard Worker * buffer objects with offsets and pitches per plane. 490*d83cc019SAndroid Build Coastguard Worker * The pitch and offset order is dictated by the fourcc, 491*d83cc019SAndroid Build Coastguard Worker * e.g. NV12 (http://fourcc.org/yuv.php#NV12) is described as: 492*d83cc019SAndroid Build Coastguard Worker * 493*d83cc019SAndroid Build Coastguard Worker * YUV 4:2:0 image with a plane of 8 bit Y samples 494*d83cc019SAndroid Build Coastguard Worker * followed by an interleaved U/V plane containing 495*d83cc019SAndroid Build Coastguard Worker * 8 bit 2x2 subsampled colour difference samples. 496*d83cc019SAndroid Build Coastguard Worker * 497*d83cc019SAndroid Build Coastguard Worker * So it would consist of Y as offsets[0] and UV as 498*d83cc019SAndroid Build Coastguard Worker * offsets[1]. Note that offsets[0] will generally 499*d83cc019SAndroid Build Coastguard Worker * be 0 (but this is not required). 500*d83cc019SAndroid Build Coastguard Worker * 501*d83cc019SAndroid Build Coastguard Worker * To accommodate tiled, compressed, etc formats, a 502*d83cc019SAndroid Build Coastguard Worker * modifier can be specified. The default value of zero 503*d83cc019SAndroid Build Coastguard Worker * indicates "native" format as specified by the fourcc. 504*d83cc019SAndroid Build Coastguard Worker * Vendor specific modifier token. Note that even though 505*d83cc019SAndroid Build Coastguard Worker * it looks like we have a modifier per-plane, we in fact 506*d83cc019SAndroid Build Coastguard Worker * do not. The modifier for each plane must be identical. 507*d83cc019SAndroid Build Coastguard Worker * Thus all combinations of different data layouts for 508*d83cc019SAndroid Build Coastguard Worker * multi plane formats must be enumerated as separate 509*d83cc019SAndroid Build Coastguard Worker * modifiers. 510*d83cc019SAndroid Build Coastguard Worker */ 511*d83cc019SAndroid Build Coastguard Worker __u32 handles[4]; 512*d83cc019SAndroid Build Coastguard Worker __u32 pitches[4]; /* pitch for each plane */ 513*d83cc019SAndroid Build Coastguard Worker __u32 offsets[4]; /* offset of each plane */ 514*d83cc019SAndroid Build Coastguard Worker __u64 modifier[4]; /* ie, tiling, compress */ 515*d83cc019SAndroid Build Coastguard Worker }; 516*d83cc019SAndroid Build Coastguard Worker 517*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FB_DIRTY_ANNOTATE_COPY 0x01 518*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FB_DIRTY_ANNOTATE_FILL 0x02 519*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FB_DIRTY_FLAGS 0x03 520*d83cc019SAndroid Build Coastguard Worker 521*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_FB_DIRTY_MAX_CLIPS 256 522*d83cc019SAndroid Build Coastguard Worker 523*d83cc019SAndroid Build Coastguard Worker /* 524*d83cc019SAndroid Build Coastguard Worker * Mark a region of a framebuffer as dirty. 525*d83cc019SAndroid Build Coastguard Worker * 526*d83cc019SAndroid Build Coastguard Worker * Some hardware does not automatically update display contents 527*d83cc019SAndroid Build Coastguard Worker * as a hardware or software draw to a framebuffer. This ioctl 528*d83cc019SAndroid Build Coastguard Worker * allows userspace to tell the kernel and the hardware what 529*d83cc019SAndroid Build Coastguard Worker * regions of the framebuffer have changed. 530*d83cc019SAndroid Build Coastguard Worker * 531*d83cc019SAndroid Build Coastguard Worker * The kernel or hardware is free to update more then just the 532*d83cc019SAndroid Build Coastguard Worker * region specified by the clip rects. The kernel or hardware 533*d83cc019SAndroid Build Coastguard Worker * may also delay and/or coalesce several calls to dirty into a 534*d83cc019SAndroid Build Coastguard Worker * single update. 535*d83cc019SAndroid Build Coastguard Worker * 536*d83cc019SAndroid Build Coastguard Worker * Userspace may annotate the updates, the annotates are a 537*d83cc019SAndroid Build Coastguard Worker * promise made by the caller that the change is either a copy 538*d83cc019SAndroid Build Coastguard Worker * of pixels or a fill of a single color in the region specified. 539*d83cc019SAndroid Build Coastguard Worker * 540*d83cc019SAndroid Build Coastguard Worker * If the DRM_MODE_FB_DIRTY_ANNOTATE_COPY flag is given then 541*d83cc019SAndroid Build Coastguard Worker * the number of updated regions are half of num_clips given, 542*d83cc019SAndroid Build Coastguard Worker * where the clip rects are paired in src and dst. The width and 543*d83cc019SAndroid Build Coastguard Worker * height of each one of the pairs must match. 544*d83cc019SAndroid Build Coastguard Worker * 545*d83cc019SAndroid Build Coastguard Worker * If the DRM_MODE_FB_DIRTY_ANNOTATE_FILL flag is given the caller 546*d83cc019SAndroid Build Coastguard Worker * promises that the region specified of the clip rects is filled 547*d83cc019SAndroid Build Coastguard Worker * completely with a single color as given in the color argument. 548*d83cc019SAndroid Build Coastguard Worker */ 549*d83cc019SAndroid Build Coastguard Worker 550*d83cc019SAndroid Build Coastguard Worker struct drm_mode_fb_dirty_cmd { 551*d83cc019SAndroid Build Coastguard Worker __u32 fb_id; 552*d83cc019SAndroid Build Coastguard Worker __u32 flags; 553*d83cc019SAndroid Build Coastguard Worker __u32 color; 554*d83cc019SAndroid Build Coastguard Worker __u32 num_clips; 555*d83cc019SAndroid Build Coastguard Worker __u64 clips_ptr; 556*d83cc019SAndroid Build Coastguard Worker }; 557*d83cc019SAndroid Build Coastguard Worker 558*d83cc019SAndroid Build Coastguard Worker struct drm_mode_mode_cmd { 559*d83cc019SAndroid Build Coastguard Worker __u32 connector_id; 560*d83cc019SAndroid Build Coastguard Worker struct drm_mode_modeinfo mode; 561*d83cc019SAndroid Build Coastguard Worker }; 562*d83cc019SAndroid Build Coastguard Worker 563*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_CURSOR_BO 0x01 564*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_CURSOR_MOVE 0x02 565*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_CURSOR_FLAGS 0x03 566*d83cc019SAndroid Build Coastguard Worker 567*d83cc019SAndroid Build Coastguard Worker /* 568*d83cc019SAndroid Build Coastguard Worker * depending on the value in flags different members are used. 569*d83cc019SAndroid Build Coastguard Worker * 570*d83cc019SAndroid Build Coastguard Worker * CURSOR_BO uses 571*d83cc019SAndroid Build Coastguard Worker * crtc_id 572*d83cc019SAndroid Build Coastguard Worker * width 573*d83cc019SAndroid Build Coastguard Worker * height 574*d83cc019SAndroid Build Coastguard Worker * handle - if 0 turns the cursor off 575*d83cc019SAndroid Build Coastguard Worker * 576*d83cc019SAndroid Build Coastguard Worker * CURSOR_MOVE uses 577*d83cc019SAndroid Build Coastguard Worker * crtc_id 578*d83cc019SAndroid Build Coastguard Worker * x 579*d83cc019SAndroid Build Coastguard Worker * y 580*d83cc019SAndroid Build Coastguard Worker */ 581*d83cc019SAndroid Build Coastguard Worker struct drm_mode_cursor { 582*d83cc019SAndroid Build Coastguard Worker __u32 flags; 583*d83cc019SAndroid Build Coastguard Worker __u32 crtc_id; 584*d83cc019SAndroid Build Coastguard Worker __s32 x; 585*d83cc019SAndroid Build Coastguard Worker __s32 y; 586*d83cc019SAndroid Build Coastguard Worker __u32 width; 587*d83cc019SAndroid Build Coastguard Worker __u32 height; 588*d83cc019SAndroid Build Coastguard Worker /* driver specific handle */ 589*d83cc019SAndroid Build Coastguard Worker __u32 handle; 590*d83cc019SAndroid Build Coastguard Worker }; 591*d83cc019SAndroid Build Coastguard Worker 592*d83cc019SAndroid Build Coastguard Worker struct drm_mode_cursor2 { 593*d83cc019SAndroid Build Coastguard Worker __u32 flags; 594*d83cc019SAndroid Build Coastguard Worker __u32 crtc_id; 595*d83cc019SAndroid Build Coastguard Worker __s32 x; 596*d83cc019SAndroid Build Coastguard Worker __s32 y; 597*d83cc019SAndroid Build Coastguard Worker __u32 width; 598*d83cc019SAndroid Build Coastguard Worker __u32 height; 599*d83cc019SAndroid Build Coastguard Worker /* driver specific handle */ 600*d83cc019SAndroid Build Coastguard Worker __u32 handle; 601*d83cc019SAndroid Build Coastguard Worker __s32 hot_x; 602*d83cc019SAndroid Build Coastguard Worker __s32 hot_y; 603*d83cc019SAndroid Build Coastguard Worker }; 604*d83cc019SAndroid Build Coastguard Worker 605*d83cc019SAndroid Build Coastguard Worker struct drm_mode_crtc_lut { 606*d83cc019SAndroid Build Coastguard Worker __u32 crtc_id; 607*d83cc019SAndroid Build Coastguard Worker __u32 gamma_size; 608*d83cc019SAndroid Build Coastguard Worker 609*d83cc019SAndroid Build Coastguard Worker /* pointers to arrays */ 610*d83cc019SAndroid Build Coastguard Worker __u64 red; 611*d83cc019SAndroid Build Coastguard Worker __u64 green; 612*d83cc019SAndroid Build Coastguard Worker __u64 blue; 613*d83cc019SAndroid Build Coastguard Worker }; 614*d83cc019SAndroid Build Coastguard Worker 615*d83cc019SAndroid Build Coastguard Worker struct drm_color_ctm { 616*d83cc019SAndroid Build Coastguard Worker /* 617*d83cc019SAndroid Build Coastguard Worker * Conversion matrix in S31.32 sign-magnitude 618*d83cc019SAndroid Build Coastguard Worker * (not two's complement!) format. 619*d83cc019SAndroid Build Coastguard Worker */ 620*d83cc019SAndroid Build Coastguard Worker __u64 matrix[9]; 621*d83cc019SAndroid Build Coastguard Worker }; 622*d83cc019SAndroid Build Coastguard Worker 623*d83cc019SAndroid Build Coastguard Worker struct drm_color_lut { 624*d83cc019SAndroid Build Coastguard Worker /* 625*d83cc019SAndroid Build Coastguard Worker * Data is U0.16 fixed point format. 626*d83cc019SAndroid Build Coastguard Worker */ 627*d83cc019SAndroid Build Coastguard Worker __u16 red; 628*d83cc019SAndroid Build Coastguard Worker __u16 green; 629*d83cc019SAndroid Build Coastguard Worker __u16 blue; 630*d83cc019SAndroid Build Coastguard Worker __u16 reserved; 631*d83cc019SAndroid Build Coastguard Worker }; 632*d83cc019SAndroid Build Coastguard Worker 633*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_PAGE_FLIP_EVENT 0x01 634*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_PAGE_FLIP_ASYNC 0x02 635*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE 0x4 636*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_PAGE_FLIP_TARGET_RELATIVE 0x8 637*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_PAGE_FLIP_TARGET (DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE | \ 638*d83cc019SAndroid Build Coastguard Worker DRM_MODE_PAGE_FLIP_TARGET_RELATIVE) 639*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_PAGE_FLIP_FLAGS (DRM_MODE_PAGE_FLIP_EVENT | \ 640*d83cc019SAndroid Build Coastguard Worker DRM_MODE_PAGE_FLIP_ASYNC | \ 641*d83cc019SAndroid Build Coastguard Worker DRM_MODE_PAGE_FLIP_TARGET) 642*d83cc019SAndroid Build Coastguard Worker 643*d83cc019SAndroid Build Coastguard Worker /* 644*d83cc019SAndroid Build Coastguard Worker * Request a page flip on the specified crtc. 645*d83cc019SAndroid Build Coastguard Worker * 646*d83cc019SAndroid Build Coastguard Worker * This ioctl will ask KMS to schedule a page flip for the specified 647*d83cc019SAndroid Build Coastguard Worker * crtc. Once any pending rendering targeting the specified fb (as of 648*d83cc019SAndroid Build Coastguard Worker * ioctl time) has completed, the crtc will be reprogrammed to display 649*d83cc019SAndroid Build Coastguard Worker * that fb after the next vertical refresh. The ioctl returns 650*d83cc019SAndroid Build Coastguard Worker * immediately, but subsequent rendering to the current fb will block 651*d83cc019SAndroid Build Coastguard Worker * in the execbuffer ioctl until the page flip happens. If a page 652*d83cc019SAndroid Build Coastguard Worker * flip is already pending as the ioctl is called, EBUSY will be 653*d83cc019SAndroid Build Coastguard Worker * returned. 654*d83cc019SAndroid Build Coastguard Worker * 655*d83cc019SAndroid Build Coastguard Worker * Flag DRM_MODE_PAGE_FLIP_EVENT requests that drm sends back a vblank 656*d83cc019SAndroid Build Coastguard Worker * event (see drm.h: struct drm_event_vblank) when the page flip is 657*d83cc019SAndroid Build Coastguard Worker * done. The user_data field passed in with this ioctl will be 658*d83cc019SAndroid Build Coastguard Worker * returned as the user_data field in the vblank event struct. 659*d83cc019SAndroid Build Coastguard Worker * 660*d83cc019SAndroid Build Coastguard Worker * Flag DRM_MODE_PAGE_FLIP_ASYNC requests that the flip happen 661*d83cc019SAndroid Build Coastguard Worker * 'as soon as possible', meaning that it not delay waiting for vblank. 662*d83cc019SAndroid Build Coastguard Worker * This may cause tearing on the screen. 663*d83cc019SAndroid Build Coastguard Worker * 664*d83cc019SAndroid Build Coastguard Worker * The reserved field must be zero. 665*d83cc019SAndroid Build Coastguard Worker */ 666*d83cc019SAndroid Build Coastguard Worker 667*d83cc019SAndroid Build Coastguard Worker struct drm_mode_crtc_page_flip { 668*d83cc019SAndroid Build Coastguard Worker __u32 crtc_id; 669*d83cc019SAndroid Build Coastguard Worker __u32 fb_id; 670*d83cc019SAndroid Build Coastguard Worker __u32 flags; 671*d83cc019SAndroid Build Coastguard Worker __u32 reserved; 672*d83cc019SAndroid Build Coastguard Worker __u64 user_data; 673*d83cc019SAndroid Build Coastguard Worker }; 674*d83cc019SAndroid Build Coastguard Worker 675*d83cc019SAndroid Build Coastguard Worker /* 676*d83cc019SAndroid Build Coastguard Worker * Request a page flip on the specified crtc. 677*d83cc019SAndroid Build Coastguard Worker * 678*d83cc019SAndroid Build Coastguard Worker * Same as struct drm_mode_crtc_page_flip, but supports new flags and 679*d83cc019SAndroid Build Coastguard Worker * re-purposes the reserved field: 680*d83cc019SAndroid Build Coastguard Worker * 681*d83cc019SAndroid Build Coastguard Worker * The sequence field must be zero unless either of the 682*d83cc019SAndroid Build Coastguard Worker * DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE/RELATIVE flags is specified. When 683*d83cc019SAndroid Build Coastguard Worker * the ABSOLUTE flag is specified, the sequence field denotes the absolute 684*d83cc019SAndroid Build Coastguard Worker * vblank sequence when the flip should take effect. When the RELATIVE 685*d83cc019SAndroid Build Coastguard Worker * flag is specified, the sequence field denotes the relative (to the 686*d83cc019SAndroid Build Coastguard Worker * current one when the ioctl is called) vblank sequence when the flip 687*d83cc019SAndroid Build Coastguard Worker * should take effect. NOTE: DRM_IOCTL_WAIT_VBLANK must still be used to 688*d83cc019SAndroid Build Coastguard Worker * make sure the vblank sequence before the target one has passed before 689*d83cc019SAndroid Build Coastguard Worker * calling this ioctl. The purpose of the 690*d83cc019SAndroid Build Coastguard Worker * DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE/RELATIVE flags is merely to clarify 691*d83cc019SAndroid Build Coastguard Worker * the target for when code dealing with a page flip runs during a 692*d83cc019SAndroid Build Coastguard Worker * vertical blank period. 693*d83cc019SAndroid Build Coastguard Worker */ 694*d83cc019SAndroid Build Coastguard Worker 695*d83cc019SAndroid Build Coastguard Worker struct drm_mode_crtc_page_flip_target { 696*d83cc019SAndroid Build Coastguard Worker __u32 crtc_id; 697*d83cc019SAndroid Build Coastguard Worker __u32 fb_id; 698*d83cc019SAndroid Build Coastguard Worker __u32 flags; 699*d83cc019SAndroid Build Coastguard Worker __u32 sequence; 700*d83cc019SAndroid Build Coastguard Worker __u64 user_data; 701*d83cc019SAndroid Build Coastguard Worker }; 702*d83cc019SAndroid Build Coastguard Worker 703*d83cc019SAndroid Build Coastguard Worker /* create a dumb scanout buffer */ 704*d83cc019SAndroid Build Coastguard Worker struct drm_mode_create_dumb { 705*d83cc019SAndroid Build Coastguard Worker __u32 height; 706*d83cc019SAndroid Build Coastguard Worker __u32 width; 707*d83cc019SAndroid Build Coastguard Worker __u32 bpp; 708*d83cc019SAndroid Build Coastguard Worker __u32 flags; 709*d83cc019SAndroid Build Coastguard Worker /* handle, pitch, size will be returned */ 710*d83cc019SAndroid Build Coastguard Worker __u32 handle; 711*d83cc019SAndroid Build Coastguard Worker __u32 pitch; 712*d83cc019SAndroid Build Coastguard Worker __u64 size; 713*d83cc019SAndroid Build Coastguard Worker }; 714*d83cc019SAndroid Build Coastguard Worker 715*d83cc019SAndroid Build Coastguard Worker /* set up for mmap of a dumb scanout buffer */ 716*d83cc019SAndroid Build Coastguard Worker struct drm_mode_map_dumb { 717*d83cc019SAndroid Build Coastguard Worker /** Handle for the object being mapped. */ 718*d83cc019SAndroid Build Coastguard Worker __u32 handle; 719*d83cc019SAndroid Build Coastguard Worker __u32 pad; 720*d83cc019SAndroid Build Coastguard Worker /** 721*d83cc019SAndroid Build Coastguard Worker * Fake offset to use for subsequent mmap call 722*d83cc019SAndroid Build Coastguard Worker * 723*d83cc019SAndroid Build Coastguard Worker * This is a fixed-size type for 32/64 compatibility. 724*d83cc019SAndroid Build Coastguard Worker */ 725*d83cc019SAndroid Build Coastguard Worker __u64 offset; 726*d83cc019SAndroid Build Coastguard Worker }; 727*d83cc019SAndroid Build Coastguard Worker 728*d83cc019SAndroid Build Coastguard Worker struct drm_mode_destroy_dumb { 729*d83cc019SAndroid Build Coastguard Worker __u32 handle; 730*d83cc019SAndroid Build Coastguard Worker }; 731*d83cc019SAndroid Build Coastguard Worker 732*d83cc019SAndroid Build Coastguard Worker /* page-flip flags are valid, plus: */ 733*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_ATOMIC_TEST_ONLY 0x0100 734*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_ATOMIC_NONBLOCK 0x0200 735*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_ATOMIC_ALLOW_MODESET 0x0400 736*d83cc019SAndroid Build Coastguard Worker 737*d83cc019SAndroid Build Coastguard Worker #define DRM_MODE_ATOMIC_FLAGS (\ 738*d83cc019SAndroid Build Coastguard Worker DRM_MODE_PAGE_FLIP_EVENT |\ 739*d83cc019SAndroid Build Coastguard Worker DRM_MODE_PAGE_FLIP_ASYNC |\ 740*d83cc019SAndroid Build Coastguard Worker DRM_MODE_ATOMIC_TEST_ONLY |\ 741*d83cc019SAndroid Build Coastguard Worker DRM_MODE_ATOMIC_NONBLOCK |\ 742*d83cc019SAndroid Build Coastguard Worker DRM_MODE_ATOMIC_ALLOW_MODESET) 743*d83cc019SAndroid Build Coastguard Worker 744*d83cc019SAndroid Build Coastguard Worker struct drm_mode_atomic { 745*d83cc019SAndroid Build Coastguard Worker __u32 flags; 746*d83cc019SAndroid Build Coastguard Worker __u32 count_objs; 747*d83cc019SAndroid Build Coastguard Worker __u64 objs_ptr; 748*d83cc019SAndroid Build Coastguard Worker __u64 count_props_ptr; 749*d83cc019SAndroid Build Coastguard Worker __u64 props_ptr; 750*d83cc019SAndroid Build Coastguard Worker __u64 prop_values_ptr; 751*d83cc019SAndroid Build Coastguard Worker __u64 reserved; 752*d83cc019SAndroid Build Coastguard Worker __u64 user_data; 753*d83cc019SAndroid Build Coastguard Worker }; 754*d83cc019SAndroid Build Coastguard Worker 755*d83cc019SAndroid Build Coastguard Worker struct drm_format_modifier_blob { 756*d83cc019SAndroid Build Coastguard Worker #define FORMAT_BLOB_CURRENT 1 757*d83cc019SAndroid Build Coastguard Worker /* Version of this blob format */ 758*d83cc019SAndroid Build Coastguard Worker __u32 version; 759*d83cc019SAndroid Build Coastguard Worker 760*d83cc019SAndroid Build Coastguard Worker /* Flags */ 761*d83cc019SAndroid Build Coastguard Worker __u32 flags; 762*d83cc019SAndroid Build Coastguard Worker 763*d83cc019SAndroid Build Coastguard Worker /* Number of fourcc formats supported */ 764*d83cc019SAndroid Build Coastguard Worker __u32 count_formats; 765*d83cc019SAndroid Build Coastguard Worker 766*d83cc019SAndroid Build Coastguard Worker /* Where in this blob the formats exist (in bytes) */ 767*d83cc019SAndroid Build Coastguard Worker __u32 formats_offset; 768*d83cc019SAndroid Build Coastguard Worker 769*d83cc019SAndroid Build Coastguard Worker /* Number of drm_format_modifiers */ 770*d83cc019SAndroid Build Coastguard Worker __u32 count_modifiers; 771*d83cc019SAndroid Build Coastguard Worker 772*d83cc019SAndroid Build Coastguard Worker /* Where in this blob the modifiers exist (in bytes) */ 773*d83cc019SAndroid Build Coastguard Worker __u32 modifiers_offset; 774*d83cc019SAndroid Build Coastguard Worker 775*d83cc019SAndroid Build Coastguard Worker /* __u32 formats[] */ 776*d83cc019SAndroid Build Coastguard Worker /* struct drm_format_modifier modifiers[] */ 777*d83cc019SAndroid Build Coastguard Worker }; 778*d83cc019SAndroid Build Coastguard Worker 779*d83cc019SAndroid Build Coastguard Worker struct drm_format_modifier { 780*d83cc019SAndroid Build Coastguard Worker /* Bitmask of formats in get_plane format list this info applies to. The 781*d83cc019SAndroid Build Coastguard Worker * offset allows a sliding window of which 64 formats (bits). 782*d83cc019SAndroid Build Coastguard Worker * 783*d83cc019SAndroid Build Coastguard Worker * Some examples: 784*d83cc019SAndroid Build Coastguard Worker * In today's world with < 65 formats, and formats 0, and 2 are 785*d83cc019SAndroid Build Coastguard Worker * supported 786*d83cc019SAndroid Build Coastguard Worker * 0x0000000000000005 787*d83cc019SAndroid Build Coastguard Worker * ^-offset = 0, formats = 5 788*d83cc019SAndroid Build Coastguard Worker * 789*d83cc019SAndroid Build Coastguard Worker * If the number formats grew to 128, and formats 98-102 are 790*d83cc019SAndroid Build Coastguard Worker * supported with the modifier: 791*d83cc019SAndroid Build Coastguard Worker * 792*d83cc019SAndroid Build Coastguard Worker * 0x0000007c00000000 0000000000000000 793*d83cc019SAndroid Build Coastguard Worker * ^ 794*d83cc019SAndroid Build Coastguard Worker * |__offset = 64, formats = 0x7c00000000 795*d83cc019SAndroid Build Coastguard Worker * 796*d83cc019SAndroid Build Coastguard Worker */ 797*d83cc019SAndroid Build Coastguard Worker __u64 formats; 798*d83cc019SAndroid Build Coastguard Worker __u32 offset; 799*d83cc019SAndroid Build Coastguard Worker __u32 pad; 800*d83cc019SAndroid Build Coastguard Worker 801*d83cc019SAndroid Build Coastguard Worker /* The modifier that applies to the >get_plane format list bitmask. */ 802*d83cc019SAndroid Build Coastguard Worker __u64 modifier; 803*d83cc019SAndroid Build Coastguard Worker }; 804*d83cc019SAndroid Build Coastguard Worker 805*d83cc019SAndroid Build Coastguard Worker /** 806*d83cc019SAndroid Build Coastguard Worker * Create a new 'blob' data property, copying length bytes from data pointer, 807*d83cc019SAndroid Build Coastguard Worker * and returning new blob ID. 808*d83cc019SAndroid Build Coastguard Worker */ 809*d83cc019SAndroid Build Coastguard Worker struct drm_mode_create_blob { 810*d83cc019SAndroid Build Coastguard Worker /** Pointer to data to copy. */ 811*d83cc019SAndroid Build Coastguard Worker __u64 data; 812*d83cc019SAndroid Build Coastguard Worker /** Length of data to copy. */ 813*d83cc019SAndroid Build Coastguard Worker __u32 length; 814*d83cc019SAndroid Build Coastguard Worker /** Return: new property ID. */ 815*d83cc019SAndroid Build Coastguard Worker __u32 blob_id; 816*d83cc019SAndroid Build Coastguard Worker }; 817*d83cc019SAndroid Build Coastguard Worker 818*d83cc019SAndroid Build Coastguard Worker /** 819*d83cc019SAndroid Build Coastguard Worker * Destroy a user-created blob property. 820*d83cc019SAndroid Build Coastguard Worker */ 821*d83cc019SAndroid Build Coastguard Worker struct drm_mode_destroy_blob { 822*d83cc019SAndroid Build Coastguard Worker __u32 blob_id; 823*d83cc019SAndroid Build Coastguard Worker }; 824*d83cc019SAndroid Build Coastguard Worker 825*d83cc019SAndroid Build Coastguard Worker /** 826*d83cc019SAndroid Build Coastguard Worker * Lease mode resources, creating another drm_master. 827*d83cc019SAndroid Build Coastguard Worker */ 828*d83cc019SAndroid Build Coastguard Worker struct drm_mode_create_lease { 829*d83cc019SAndroid Build Coastguard Worker /** Pointer to array of object ids (__u32) */ 830*d83cc019SAndroid Build Coastguard Worker __u64 object_ids; 831*d83cc019SAndroid Build Coastguard Worker /** Number of object ids */ 832*d83cc019SAndroid Build Coastguard Worker __u32 object_count; 833*d83cc019SAndroid Build Coastguard Worker /** flags for new FD (O_CLOEXEC, etc) */ 834*d83cc019SAndroid Build Coastguard Worker __u32 flags; 835*d83cc019SAndroid Build Coastguard Worker 836*d83cc019SAndroid Build Coastguard Worker /** Return: unique identifier for lessee. */ 837*d83cc019SAndroid Build Coastguard Worker __u32 lessee_id; 838*d83cc019SAndroid Build Coastguard Worker /** Return: file descriptor to new drm_master file */ 839*d83cc019SAndroid Build Coastguard Worker __u32 fd; 840*d83cc019SAndroid Build Coastguard Worker }; 841*d83cc019SAndroid Build Coastguard Worker 842*d83cc019SAndroid Build Coastguard Worker /** 843*d83cc019SAndroid Build Coastguard Worker * List lesses from a drm_master 844*d83cc019SAndroid Build Coastguard Worker */ 845*d83cc019SAndroid Build Coastguard Worker struct drm_mode_list_lessees { 846*d83cc019SAndroid Build Coastguard Worker /** Number of lessees. 847*d83cc019SAndroid Build Coastguard Worker * On input, provides length of the array. 848*d83cc019SAndroid Build Coastguard Worker * On output, provides total number. No 849*d83cc019SAndroid Build Coastguard Worker * more than the input number will be written 850*d83cc019SAndroid Build Coastguard Worker * back, so two calls can be used to get 851*d83cc019SAndroid Build Coastguard Worker * the size and then the data. 852*d83cc019SAndroid Build Coastguard Worker */ 853*d83cc019SAndroid Build Coastguard Worker __u32 count_lessees; 854*d83cc019SAndroid Build Coastguard Worker __u32 pad; 855*d83cc019SAndroid Build Coastguard Worker 856*d83cc019SAndroid Build Coastguard Worker /** Pointer to lessees. 857*d83cc019SAndroid Build Coastguard Worker * pointer to __u64 array of lessee ids 858*d83cc019SAndroid Build Coastguard Worker */ 859*d83cc019SAndroid Build Coastguard Worker __u64 lessees_ptr; 860*d83cc019SAndroid Build Coastguard Worker }; 861*d83cc019SAndroid Build Coastguard Worker 862*d83cc019SAndroid Build Coastguard Worker /** 863*d83cc019SAndroid Build Coastguard Worker * Get leased objects 864*d83cc019SAndroid Build Coastguard Worker */ 865*d83cc019SAndroid Build Coastguard Worker struct drm_mode_get_lease { 866*d83cc019SAndroid Build Coastguard Worker /** Number of leased objects. 867*d83cc019SAndroid Build Coastguard Worker * On input, provides length of the array. 868*d83cc019SAndroid Build Coastguard Worker * On output, provides total number. No 869*d83cc019SAndroid Build Coastguard Worker * more than the input number will be written 870*d83cc019SAndroid Build Coastguard Worker * back, so two calls can be used to get 871*d83cc019SAndroid Build Coastguard Worker * the size and then the data. 872*d83cc019SAndroid Build Coastguard Worker */ 873*d83cc019SAndroid Build Coastguard Worker __u32 count_objects; 874*d83cc019SAndroid Build Coastguard Worker __u32 pad; 875*d83cc019SAndroid Build Coastguard Worker 876*d83cc019SAndroid Build Coastguard Worker /** Pointer to objects. 877*d83cc019SAndroid Build Coastguard Worker * pointer to __u32 array of object ids 878*d83cc019SAndroid Build Coastguard Worker */ 879*d83cc019SAndroid Build Coastguard Worker __u64 objects_ptr; 880*d83cc019SAndroid Build Coastguard Worker }; 881*d83cc019SAndroid Build Coastguard Worker 882*d83cc019SAndroid Build Coastguard Worker /** 883*d83cc019SAndroid Build Coastguard Worker * Revoke lease 884*d83cc019SAndroid Build Coastguard Worker */ 885*d83cc019SAndroid Build Coastguard Worker struct drm_mode_revoke_lease { 886*d83cc019SAndroid Build Coastguard Worker /** Unique ID of lessee 887*d83cc019SAndroid Build Coastguard Worker */ 888*d83cc019SAndroid Build Coastguard Worker __u32 lessee_id; 889*d83cc019SAndroid Build Coastguard Worker }; 890*d83cc019SAndroid Build Coastguard Worker 891*d83cc019SAndroid Build Coastguard Worker /** 892*d83cc019SAndroid Build Coastguard Worker * struct drm_mode_rect - Two dimensional rectangle. 893*d83cc019SAndroid Build Coastguard Worker * @x1: Horizontal starting coordinate (inclusive). 894*d83cc019SAndroid Build Coastguard Worker * @y1: Vertical starting coordinate (inclusive). 895*d83cc019SAndroid Build Coastguard Worker * @x2: Horizontal ending coordinate (exclusive). 896*d83cc019SAndroid Build Coastguard Worker * @y2: Vertical ending coordinate (exclusive). 897*d83cc019SAndroid Build Coastguard Worker * 898*d83cc019SAndroid Build Coastguard Worker * With drm subsystem using struct drm_rect to manage rectangular area this 899*d83cc019SAndroid Build Coastguard Worker * export it to user-space. 900*d83cc019SAndroid Build Coastguard Worker * 901*d83cc019SAndroid Build Coastguard Worker * Currently used by drm_mode_atomic blob property FB_DAMAGE_CLIPS. 902*d83cc019SAndroid Build Coastguard Worker */ 903*d83cc019SAndroid Build Coastguard Worker struct drm_mode_rect { 904*d83cc019SAndroid Build Coastguard Worker __s32 x1; 905*d83cc019SAndroid Build Coastguard Worker __s32 y1; 906*d83cc019SAndroid Build Coastguard Worker __s32 x2; 907*d83cc019SAndroid Build Coastguard Worker __s32 y2; 908*d83cc019SAndroid Build Coastguard Worker }; 909*d83cc019SAndroid Build Coastguard Worker 910*d83cc019SAndroid Build Coastguard Worker #if defined(__cplusplus) 911*d83cc019SAndroid Build Coastguard Worker } 912*d83cc019SAndroid Build Coastguard Worker #endif 913*d83cc019SAndroid Build Coastguard Worker 914*d83cc019SAndroid Build Coastguard Worker #endif 915