1*7688df22SAndroid Build Coastguard Worker /* SPDX-License-Identifier: MIT */ 2*7688df22SAndroid Build Coastguard Worker /* Copyright (c) 2012-2020 NVIDIA Corporation */ 3*7688df22SAndroid Build Coastguard Worker 4*7688df22SAndroid Build Coastguard Worker #ifndef _UAPI_TEGRA_DRM_H_ 5*7688df22SAndroid Build Coastguard Worker #define _UAPI_TEGRA_DRM_H_ 6*7688df22SAndroid Build Coastguard Worker 7*7688df22SAndroid Build Coastguard Worker #include "drm.h" 8*7688df22SAndroid Build Coastguard Worker 9*7688df22SAndroid Build Coastguard Worker #if defined(__cplusplus) 10*7688df22SAndroid Build Coastguard Worker extern "C" { 11*7688df22SAndroid Build Coastguard Worker #endif 12*7688df22SAndroid Build Coastguard Worker 13*7688df22SAndroid Build Coastguard Worker /* Tegra DRM legacy UAPI. Only enabled with STAGING */ 14*7688df22SAndroid Build Coastguard Worker 15*7688df22SAndroid Build Coastguard Worker #define DRM_TEGRA_GEM_CREATE_TILED (1 << 0) 16*7688df22SAndroid Build Coastguard Worker #define DRM_TEGRA_GEM_CREATE_BOTTOM_UP (1 << 1) 17*7688df22SAndroid Build Coastguard Worker 18*7688df22SAndroid Build Coastguard Worker /** 19*7688df22SAndroid Build Coastguard Worker * struct drm_tegra_gem_create - parameters for the GEM object creation IOCTL 20*7688df22SAndroid Build Coastguard Worker */ 21*7688df22SAndroid Build Coastguard Worker struct drm_tegra_gem_create { 22*7688df22SAndroid Build Coastguard Worker /** 23*7688df22SAndroid Build Coastguard Worker * @size: 24*7688df22SAndroid Build Coastguard Worker * 25*7688df22SAndroid Build Coastguard Worker * The size, in bytes, of the buffer object to be created. 26*7688df22SAndroid Build Coastguard Worker */ 27*7688df22SAndroid Build Coastguard Worker __u64 size; 28*7688df22SAndroid Build Coastguard Worker 29*7688df22SAndroid Build Coastguard Worker /** 30*7688df22SAndroid Build Coastguard Worker * @flags: 31*7688df22SAndroid Build Coastguard Worker * 32*7688df22SAndroid Build Coastguard Worker * A bitmask of flags that influence the creation of GEM objects: 33*7688df22SAndroid Build Coastguard Worker * 34*7688df22SAndroid Build Coastguard Worker * DRM_TEGRA_GEM_CREATE_TILED 35*7688df22SAndroid Build Coastguard Worker * Use the 16x16 tiling format for this buffer. 36*7688df22SAndroid Build Coastguard Worker * 37*7688df22SAndroid Build Coastguard Worker * DRM_TEGRA_GEM_CREATE_BOTTOM_UP 38*7688df22SAndroid Build Coastguard Worker * The buffer has a bottom-up layout. 39*7688df22SAndroid Build Coastguard Worker */ 40*7688df22SAndroid Build Coastguard Worker __u32 flags; 41*7688df22SAndroid Build Coastguard Worker 42*7688df22SAndroid Build Coastguard Worker /** 43*7688df22SAndroid Build Coastguard Worker * @handle: 44*7688df22SAndroid Build Coastguard Worker * 45*7688df22SAndroid Build Coastguard Worker * The handle of the created GEM object. Set by the kernel upon 46*7688df22SAndroid Build Coastguard Worker * successful completion of the IOCTL. 47*7688df22SAndroid Build Coastguard Worker */ 48*7688df22SAndroid Build Coastguard Worker __u32 handle; 49*7688df22SAndroid Build Coastguard Worker }; 50*7688df22SAndroid Build Coastguard Worker 51*7688df22SAndroid Build Coastguard Worker /** 52*7688df22SAndroid Build Coastguard Worker * struct drm_tegra_gem_mmap - parameters for the GEM mmap IOCTL 53*7688df22SAndroid Build Coastguard Worker */ 54*7688df22SAndroid Build Coastguard Worker struct drm_tegra_gem_mmap { 55*7688df22SAndroid Build Coastguard Worker /** 56*7688df22SAndroid Build Coastguard Worker * @handle: 57*7688df22SAndroid Build Coastguard Worker * 58*7688df22SAndroid Build Coastguard Worker * Handle of the GEM object to obtain an mmap offset for. 59*7688df22SAndroid Build Coastguard Worker */ 60*7688df22SAndroid Build Coastguard Worker __u32 handle; 61*7688df22SAndroid Build Coastguard Worker 62*7688df22SAndroid Build Coastguard Worker /** 63*7688df22SAndroid Build Coastguard Worker * @pad: 64*7688df22SAndroid Build Coastguard Worker * 65*7688df22SAndroid Build Coastguard Worker * Structure padding that may be used in the future. Must be 0. 66*7688df22SAndroid Build Coastguard Worker */ 67*7688df22SAndroid Build Coastguard Worker __u32 pad; 68*7688df22SAndroid Build Coastguard Worker 69*7688df22SAndroid Build Coastguard Worker /** 70*7688df22SAndroid Build Coastguard Worker * @offset: 71*7688df22SAndroid Build Coastguard Worker * 72*7688df22SAndroid Build Coastguard Worker * The mmap offset for the given GEM object. Set by the kernel upon 73*7688df22SAndroid Build Coastguard Worker * successful completion of the IOCTL. 74*7688df22SAndroid Build Coastguard Worker */ 75*7688df22SAndroid Build Coastguard Worker __u64 offset; 76*7688df22SAndroid Build Coastguard Worker }; 77*7688df22SAndroid Build Coastguard Worker 78*7688df22SAndroid Build Coastguard Worker /** 79*7688df22SAndroid Build Coastguard Worker * struct drm_tegra_syncpt_read - parameters for the read syncpoint IOCTL 80*7688df22SAndroid Build Coastguard Worker */ 81*7688df22SAndroid Build Coastguard Worker struct drm_tegra_syncpt_read { 82*7688df22SAndroid Build Coastguard Worker /** 83*7688df22SAndroid Build Coastguard Worker * @id: 84*7688df22SAndroid Build Coastguard Worker * 85*7688df22SAndroid Build Coastguard Worker * ID of the syncpoint to read the current value from. 86*7688df22SAndroid Build Coastguard Worker */ 87*7688df22SAndroid Build Coastguard Worker __u32 id; 88*7688df22SAndroid Build Coastguard Worker 89*7688df22SAndroid Build Coastguard Worker /** 90*7688df22SAndroid Build Coastguard Worker * @value: 91*7688df22SAndroid Build Coastguard Worker * 92*7688df22SAndroid Build Coastguard Worker * The current syncpoint value. Set by the kernel upon successful 93*7688df22SAndroid Build Coastguard Worker * completion of the IOCTL. 94*7688df22SAndroid Build Coastguard Worker */ 95*7688df22SAndroid Build Coastguard Worker __u32 value; 96*7688df22SAndroid Build Coastguard Worker }; 97*7688df22SAndroid Build Coastguard Worker 98*7688df22SAndroid Build Coastguard Worker /** 99*7688df22SAndroid Build Coastguard Worker * struct drm_tegra_syncpt_incr - parameters for the increment syncpoint IOCTL 100*7688df22SAndroid Build Coastguard Worker */ 101*7688df22SAndroid Build Coastguard Worker struct drm_tegra_syncpt_incr { 102*7688df22SAndroid Build Coastguard Worker /** 103*7688df22SAndroid Build Coastguard Worker * @id: 104*7688df22SAndroid Build Coastguard Worker * 105*7688df22SAndroid Build Coastguard Worker * ID of the syncpoint to increment. 106*7688df22SAndroid Build Coastguard Worker */ 107*7688df22SAndroid Build Coastguard Worker __u32 id; 108*7688df22SAndroid Build Coastguard Worker 109*7688df22SAndroid Build Coastguard Worker /** 110*7688df22SAndroid Build Coastguard Worker * @pad: 111*7688df22SAndroid Build Coastguard Worker * 112*7688df22SAndroid Build Coastguard Worker * Structure padding that may be used in the future. Must be 0. 113*7688df22SAndroid Build Coastguard Worker */ 114*7688df22SAndroid Build Coastguard Worker __u32 pad; 115*7688df22SAndroid Build Coastguard Worker }; 116*7688df22SAndroid Build Coastguard Worker 117*7688df22SAndroid Build Coastguard Worker /** 118*7688df22SAndroid Build Coastguard Worker * struct drm_tegra_syncpt_wait - parameters for the wait syncpoint IOCTL 119*7688df22SAndroid Build Coastguard Worker */ 120*7688df22SAndroid Build Coastguard Worker struct drm_tegra_syncpt_wait { 121*7688df22SAndroid Build Coastguard Worker /** 122*7688df22SAndroid Build Coastguard Worker * @id: 123*7688df22SAndroid Build Coastguard Worker * 124*7688df22SAndroid Build Coastguard Worker * ID of the syncpoint to wait on. 125*7688df22SAndroid Build Coastguard Worker */ 126*7688df22SAndroid Build Coastguard Worker __u32 id; 127*7688df22SAndroid Build Coastguard Worker 128*7688df22SAndroid Build Coastguard Worker /** 129*7688df22SAndroid Build Coastguard Worker * @thresh: 130*7688df22SAndroid Build Coastguard Worker * 131*7688df22SAndroid Build Coastguard Worker * Threshold value for which to wait. 132*7688df22SAndroid Build Coastguard Worker */ 133*7688df22SAndroid Build Coastguard Worker __u32 thresh; 134*7688df22SAndroid Build Coastguard Worker 135*7688df22SAndroid Build Coastguard Worker /** 136*7688df22SAndroid Build Coastguard Worker * @timeout: 137*7688df22SAndroid Build Coastguard Worker * 138*7688df22SAndroid Build Coastguard Worker * Timeout, in milliseconds, to wait. 139*7688df22SAndroid Build Coastguard Worker */ 140*7688df22SAndroid Build Coastguard Worker __u32 timeout; 141*7688df22SAndroid Build Coastguard Worker 142*7688df22SAndroid Build Coastguard Worker /** 143*7688df22SAndroid Build Coastguard Worker * @value: 144*7688df22SAndroid Build Coastguard Worker * 145*7688df22SAndroid Build Coastguard Worker * The new syncpoint value after the wait. Set by the kernel upon 146*7688df22SAndroid Build Coastguard Worker * successful completion of the IOCTL. 147*7688df22SAndroid Build Coastguard Worker */ 148*7688df22SAndroid Build Coastguard Worker __u32 value; 149*7688df22SAndroid Build Coastguard Worker }; 150*7688df22SAndroid Build Coastguard Worker 151*7688df22SAndroid Build Coastguard Worker #define DRM_TEGRA_NO_TIMEOUT (0xffffffff) 152*7688df22SAndroid Build Coastguard Worker 153*7688df22SAndroid Build Coastguard Worker /** 154*7688df22SAndroid Build Coastguard Worker * struct drm_tegra_open_channel - parameters for the open channel IOCTL 155*7688df22SAndroid Build Coastguard Worker */ 156*7688df22SAndroid Build Coastguard Worker struct drm_tegra_open_channel { 157*7688df22SAndroid Build Coastguard Worker /** 158*7688df22SAndroid Build Coastguard Worker * @client: 159*7688df22SAndroid Build Coastguard Worker * 160*7688df22SAndroid Build Coastguard Worker * The client ID for this channel. 161*7688df22SAndroid Build Coastguard Worker */ 162*7688df22SAndroid Build Coastguard Worker __u32 client; 163*7688df22SAndroid Build Coastguard Worker 164*7688df22SAndroid Build Coastguard Worker /** 165*7688df22SAndroid Build Coastguard Worker * @pad: 166*7688df22SAndroid Build Coastguard Worker * 167*7688df22SAndroid Build Coastguard Worker * Structure padding that may be used in the future. Must be 0. 168*7688df22SAndroid Build Coastguard Worker */ 169*7688df22SAndroid Build Coastguard Worker __u32 pad; 170*7688df22SAndroid Build Coastguard Worker 171*7688df22SAndroid Build Coastguard Worker /** 172*7688df22SAndroid Build Coastguard Worker * @context: 173*7688df22SAndroid Build Coastguard Worker * 174*7688df22SAndroid Build Coastguard Worker * The application context of this channel. Set by the kernel upon 175*7688df22SAndroid Build Coastguard Worker * successful completion of the IOCTL. This context needs to be passed 176*7688df22SAndroid Build Coastguard Worker * to the DRM_TEGRA_CHANNEL_CLOSE or the DRM_TEGRA_SUBMIT IOCTLs. 177*7688df22SAndroid Build Coastguard Worker */ 178*7688df22SAndroid Build Coastguard Worker __u64 context; 179*7688df22SAndroid Build Coastguard Worker }; 180*7688df22SAndroid Build Coastguard Worker 181*7688df22SAndroid Build Coastguard Worker /** 182*7688df22SAndroid Build Coastguard Worker * struct drm_tegra_close_channel - parameters for the close channel IOCTL 183*7688df22SAndroid Build Coastguard Worker */ 184*7688df22SAndroid Build Coastguard Worker struct drm_tegra_close_channel { 185*7688df22SAndroid Build Coastguard Worker /** 186*7688df22SAndroid Build Coastguard Worker * @context: 187*7688df22SAndroid Build Coastguard Worker * 188*7688df22SAndroid Build Coastguard Worker * The application context of this channel. This is obtained from the 189*7688df22SAndroid Build Coastguard Worker * DRM_TEGRA_OPEN_CHANNEL IOCTL. 190*7688df22SAndroid Build Coastguard Worker */ 191*7688df22SAndroid Build Coastguard Worker __u64 context; 192*7688df22SAndroid Build Coastguard Worker }; 193*7688df22SAndroid Build Coastguard Worker 194*7688df22SAndroid Build Coastguard Worker /** 195*7688df22SAndroid Build Coastguard Worker * struct drm_tegra_get_syncpt - parameters for the get syncpoint IOCTL 196*7688df22SAndroid Build Coastguard Worker */ 197*7688df22SAndroid Build Coastguard Worker struct drm_tegra_get_syncpt { 198*7688df22SAndroid Build Coastguard Worker /** 199*7688df22SAndroid Build Coastguard Worker * @context: 200*7688df22SAndroid Build Coastguard Worker * 201*7688df22SAndroid Build Coastguard Worker * The application context identifying the channel for which to obtain 202*7688df22SAndroid Build Coastguard Worker * the syncpoint ID. 203*7688df22SAndroid Build Coastguard Worker */ 204*7688df22SAndroid Build Coastguard Worker __u64 context; 205*7688df22SAndroid Build Coastguard Worker 206*7688df22SAndroid Build Coastguard Worker /** 207*7688df22SAndroid Build Coastguard Worker * @index: 208*7688df22SAndroid Build Coastguard Worker * 209*7688df22SAndroid Build Coastguard Worker * Index of the client syncpoint for which to obtain the ID. 210*7688df22SAndroid Build Coastguard Worker */ 211*7688df22SAndroid Build Coastguard Worker __u32 index; 212*7688df22SAndroid Build Coastguard Worker 213*7688df22SAndroid Build Coastguard Worker /** 214*7688df22SAndroid Build Coastguard Worker * @id: 215*7688df22SAndroid Build Coastguard Worker * 216*7688df22SAndroid Build Coastguard Worker * The ID of the given syncpoint. Set by the kernel upon successful 217*7688df22SAndroid Build Coastguard Worker * completion of the IOCTL. 218*7688df22SAndroid Build Coastguard Worker */ 219*7688df22SAndroid Build Coastguard Worker __u32 id; 220*7688df22SAndroid Build Coastguard Worker }; 221*7688df22SAndroid Build Coastguard Worker 222*7688df22SAndroid Build Coastguard Worker /** 223*7688df22SAndroid Build Coastguard Worker * struct drm_tegra_get_syncpt_base - parameters for the get wait base IOCTL 224*7688df22SAndroid Build Coastguard Worker */ 225*7688df22SAndroid Build Coastguard Worker struct drm_tegra_get_syncpt_base { 226*7688df22SAndroid Build Coastguard Worker /** 227*7688df22SAndroid Build Coastguard Worker * @context: 228*7688df22SAndroid Build Coastguard Worker * 229*7688df22SAndroid Build Coastguard Worker * The application context identifying for which channel to obtain the 230*7688df22SAndroid Build Coastguard Worker * wait base. 231*7688df22SAndroid Build Coastguard Worker */ 232*7688df22SAndroid Build Coastguard Worker __u64 context; 233*7688df22SAndroid Build Coastguard Worker 234*7688df22SAndroid Build Coastguard Worker /** 235*7688df22SAndroid Build Coastguard Worker * @syncpt: 236*7688df22SAndroid Build Coastguard Worker * 237*7688df22SAndroid Build Coastguard Worker * ID of the syncpoint for which to obtain the wait base. 238*7688df22SAndroid Build Coastguard Worker */ 239*7688df22SAndroid Build Coastguard Worker __u32 syncpt; 240*7688df22SAndroid Build Coastguard Worker 241*7688df22SAndroid Build Coastguard Worker /** 242*7688df22SAndroid Build Coastguard Worker * @id: 243*7688df22SAndroid Build Coastguard Worker * 244*7688df22SAndroid Build Coastguard Worker * The ID of the wait base corresponding to the client syncpoint. Set 245*7688df22SAndroid Build Coastguard Worker * by the kernel upon successful completion of the IOCTL. 246*7688df22SAndroid Build Coastguard Worker */ 247*7688df22SAndroid Build Coastguard Worker __u32 id; 248*7688df22SAndroid Build Coastguard Worker }; 249*7688df22SAndroid Build Coastguard Worker 250*7688df22SAndroid Build Coastguard Worker /** 251*7688df22SAndroid Build Coastguard Worker * struct drm_tegra_syncpt - syncpoint increment operation 252*7688df22SAndroid Build Coastguard Worker */ 253*7688df22SAndroid Build Coastguard Worker struct drm_tegra_syncpt { 254*7688df22SAndroid Build Coastguard Worker /** 255*7688df22SAndroid Build Coastguard Worker * @id: 256*7688df22SAndroid Build Coastguard Worker * 257*7688df22SAndroid Build Coastguard Worker * ID of the syncpoint to operate on. 258*7688df22SAndroid Build Coastguard Worker */ 259*7688df22SAndroid Build Coastguard Worker __u32 id; 260*7688df22SAndroid Build Coastguard Worker 261*7688df22SAndroid Build Coastguard Worker /** 262*7688df22SAndroid Build Coastguard Worker * @incrs: 263*7688df22SAndroid Build Coastguard Worker * 264*7688df22SAndroid Build Coastguard Worker * Number of increments to perform for the syncpoint. 265*7688df22SAndroid Build Coastguard Worker */ 266*7688df22SAndroid Build Coastguard Worker __u32 incrs; 267*7688df22SAndroid Build Coastguard Worker }; 268*7688df22SAndroid Build Coastguard Worker 269*7688df22SAndroid Build Coastguard Worker /** 270*7688df22SAndroid Build Coastguard Worker * struct drm_tegra_cmdbuf - structure describing a command buffer 271*7688df22SAndroid Build Coastguard Worker */ 272*7688df22SAndroid Build Coastguard Worker struct drm_tegra_cmdbuf { 273*7688df22SAndroid Build Coastguard Worker /** 274*7688df22SAndroid Build Coastguard Worker * @handle: 275*7688df22SAndroid Build Coastguard Worker * 276*7688df22SAndroid Build Coastguard Worker * Handle to a GEM object containing the command buffer. 277*7688df22SAndroid Build Coastguard Worker */ 278*7688df22SAndroid Build Coastguard Worker __u32 handle; 279*7688df22SAndroid Build Coastguard Worker 280*7688df22SAndroid Build Coastguard Worker /** 281*7688df22SAndroid Build Coastguard Worker * @offset: 282*7688df22SAndroid Build Coastguard Worker * 283*7688df22SAndroid Build Coastguard Worker * Offset, in bytes, into the GEM object identified by @handle at 284*7688df22SAndroid Build Coastguard Worker * which the command buffer starts. 285*7688df22SAndroid Build Coastguard Worker */ 286*7688df22SAndroid Build Coastguard Worker __u32 offset; 287*7688df22SAndroid Build Coastguard Worker 288*7688df22SAndroid Build Coastguard Worker /** 289*7688df22SAndroid Build Coastguard Worker * @words: 290*7688df22SAndroid Build Coastguard Worker * 291*7688df22SAndroid Build Coastguard Worker * Number of 32-bit words in this command buffer. 292*7688df22SAndroid Build Coastguard Worker */ 293*7688df22SAndroid Build Coastguard Worker __u32 words; 294*7688df22SAndroid Build Coastguard Worker 295*7688df22SAndroid Build Coastguard Worker /** 296*7688df22SAndroid Build Coastguard Worker * @pad: 297*7688df22SAndroid Build Coastguard Worker * 298*7688df22SAndroid Build Coastguard Worker * Structure padding that may be used in the future. Must be 0. 299*7688df22SAndroid Build Coastguard Worker */ 300*7688df22SAndroid Build Coastguard Worker __u32 pad; 301*7688df22SAndroid Build Coastguard Worker }; 302*7688df22SAndroid Build Coastguard Worker 303*7688df22SAndroid Build Coastguard Worker /** 304*7688df22SAndroid Build Coastguard Worker * struct drm_tegra_reloc - GEM object relocation structure 305*7688df22SAndroid Build Coastguard Worker */ 306*7688df22SAndroid Build Coastguard Worker struct drm_tegra_reloc { 307*7688df22SAndroid Build Coastguard Worker struct { 308*7688df22SAndroid Build Coastguard Worker /** 309*7688df22SAndroid Build Coastguard Worker * @cmdbuf.handle: 310*7688df22SAndroid Build Coastguard Worker * 311*7688df22SAndroid Build Coastguard Worker * Handle to the GEM object containing the command buffer for 312*7688df22SAndroid Build Coastguard Worker * which to perform this GEM object relocation. 313*7688df22SAndroid Build Coastguard Worker */ 314*7688df22SAndroid Build Coastguard Worker __u32 handle; 315*7688df22SAndroid Build Coastguard Worker 316*7688df22SAndroid Build Coastguard Worker /** 317*7688df22SAndroid Build Coastguard Worker * @cmdbuf.offset: 318*7688df22SAndroid Build Coastguard Worker * 319*7688df22SAndroid Build Coastguard Worker * Offset, in bytes, into the command buffer at which to 320*7688df22SAndroid Build Coastguard Worker * insert the relocated address. 321*7688df22SAndroid Build Coastguard Worker */ 322*7688df22SAndroid Build Coastguard Worker __u32 offset; 323*7688df22SAndroid Build Coastguard Worker } cmdbuf; 324*7688df22SAndroid Build Coastguard Worker struct { 325*7688df22SAndroid Build Coastguard Worker /** 326*7688df22SAndroid Build Coastguard Worker * @target.handle: 327*7688df22SAndroid Build Coastguard Worker * 328*7688df22SAndroid Build Coastguard Worker * Handle to the GEM object to be relocated. 329*7688df22SAndroid Build Coastguard Worker */ 330*7688df22SAndroid Build Coastguard Worker __u32 handle; 331*7688df22SAndroid Build Coastguard Worker 332*7688df22SAndroid Build Coastguard Worker /** 333*7688df22SAndroid Build Coastguard Worker * @target.offset: 334*7688df22SAndroid Build Coastguard Worker * 335*7688df22SAndroid Build Coastguard Worker * Offset, in bytes, into the target GEM object at which the 336*7688df22SAndroid Build Coastguard Worker * relocated data starts. 337*7688df22SAndroid Build Coastguard Worker */ 338*7688df22SAndroid Build Coastguard Worker __u32 offset; 339*7688df22SAndroid Build Coastguard Worker } target; 340*7688df22SAndroid Build Coastguard Worker 341*7688df22SAndroid Build Coastguard Worker /** 342*7688df22SAndroid Build Coastguard Worker * @shift: 343*7688df22SAndroid Build Coastguard Worker * 344*7688df22SAndroid Build Coastguard Worker * The number of bits by which to shift relocated addresses. 345*7688df22SAndroid Build Coastguard Worker */ 346*7688df22SAndroid Build Coastguard Worker __u32 shift; 347*7688df22SAndroid Build Coastguard Worker 348*7688df22SAndroid Build Coastguard Worker /** 349*7688df22SAndroid Build Coastguard Worker * @pad: 350*7688df22SAndroid Build Coastguard Worker * 351*7688df22SAndroid Build Coastguard Worker * Structure padding that may be used in the future. Must be 0. 352*7688df22SAndroid Build Coastguard Worker */ 353*7688df22SAndroid Build Coastguard Worker __u32 pad; 354*7688df22SAndroid Build Coastguard Worker }; 355*7688df22SAndroid Build Coastguard Worker 356*7688df22SAndroid Build Coastguard Worker /** 357*7688df22SAndroid Build Coastguard Worker * struct drm_tegra_waitchk - wait check structure 358*7688df22SAndroid Build Coastguard Worker */ 359*7688df22SAndroid Build Coastguard Worker struct drm_tegra_waitchk { 360*7688df22SAndroid Build Coastguard Worker /** 361*7688df22SAndroid Build Coastguard Worker * @handle: 362*7688df22SAndroid Build Coastguard Worker * 363*7688df22SAndroid Build Coastguard Worker * Handle to the GEM object containing a command stream on which to 364*7688df22SAndroid Build Coastguard Worker * perform the wait check. 365*7688df22SAndroid Build Coastguard Worker */ 366*7688df22SAndroid Build Coastguard Worker __u32 handle; 367*7688df22SAndroid Build Coastguard Worker 368*7688df22SAndroid Build Coastguard Worker /** 369*7688df22SAndroid Build Coastguard Worker * @offset: 370*7688df22SAndroid Build Coastguard Worker * 371*7688df22SAndroid Build Coastguard Worker * Offset, in bytes, of the location in the command stream to perform 372*7688df22SAndroid Build Coastguard Worker * the wait check on. 373*7688df22SAndroid Build Coastguard Worker */ 374*7688df22SAndroid Build Coastguard Worker __u32 offset; 375*7688df22SAndroid Build Coastguard Worker 376*7688df22SAndroid Build Coastguard Worker /** 377*7688df22SAndroid Build Coastguard Worker * @syncpt: 378*7688df22SAndroid Build Coastguard Worker * 379*7688df22SAndroid Build Coastguard Worker * ID of the syncpoint to wait check. 380*7688df22SAndroid Build Coastguard Worker */ 381*7688df22SAndroid Build Coastguard Worker __u32 syncpt; 382*7688df22SAndroid Build Coastguard Worker 383*7688df22SAndroid Build Coastguard Worker /** 384*7688df22SAndroid Build Coastguard Worker * @thresh: 385*7688df22SAndroid Build Coastguard Worker * 386*7688df22SAndroid Build Coastguard Worker * Threshold value for which to check. 387*7688df22SAndroid Build Coastguard Worker */ 388*7688df22SAndroid Build Coastguard Worker __u32 thresh; 389*7688df22SAndroid Build Coastguard Worker }; 390*7688df22SAndroid Build Coastguard Worker 391*7688df22SAndroid Build Coastguard Worker /** 392*7688df22SAndroid Build Coastguard Worker * struct drm_tegra_submit - job submission structure 393*7688df22SAndroid Build Coastguard Worker */ 394*7688df22SAndroid Build Coastguard Worker struct drm_tegra_submit { 395*7688df22SAndroid Build Coastguard Worker /** 396*7688df22SAndroid Build Coastguard Worker * @context: 397*7688df22SAndroid Build Coastguard Worker * 398*7688df22SAndroid Build Coastguard Worker * The application context identifying the channel to use for the 399*7688df22SAndroid Build Coastguard Worker * execution of this job. 400*7688df22SAndroid Build Coastguard Worker */ 401*7688df22SAndroid Build Coastguard Worker __u64 context; 402*7688df22SAndroid Build Coastguard Worker 403*7688df22SAndroid Build Coastguard Worker /** 404*7688df22SAndroid Build Coastguard Worker * @num_syncpts: 405*7688df22SAndroid Build Coastguard Worker * 406*7688df22SAndroid Build Coastguard Worker * The number of syncpoints operated on by this job. This defines the 407*7688df22SAndroid Build Coastguard Worker * length of the array pointed to by @syncpts. 408*7688df22SAndroid Build Coastguard Worker */ 409*7688df22SAndroid Build Coastguard Worker __u32 num_syncpts; 410*7688df22SAndroid Build Coastguard Worker 411*7688df22SAndroid Build Coastguard Worker /** 412*7688df22SAndroid Build Coastguard Worker * @num_cmdbufs: 413*7688df22SAndroid Build Coastguard Worker * 414*7688df22SAndroid Build Coastguard Worker * The number of command buffers to execute as part of this job. This 415*7688df22SAndroid Build Coastguard Worker * defines the length of the array pointed to by @cmdbufs. 416*7688df22SAndroid Build Coastguard Worker */ 417*7688df22SAndroid Build Coastguard Worker __u32 num_cmdbufs; 418*7688df22SAndroid Build Coastguard Worker 419*7688df22SAndroid Build Coastguard Worker /** 420*7688df22SAndroid Build Coastguard Worker * @num_relocs: 421*7688df22SAndroid Build Coastguard Worker * 422*7688df22SAndroid Build Coastguard Worker * The number of relocations to perform before executing this job. 423*7688df22SAndroid Build Coastguard Worker * This defines the length of the array pointed to by @relocs. 424*7688df22SAndroid Build Coastguard Worker */ 425*7688df22SAndroid Build Coastguard Worker __u32 num_relocs; 426*7688df22SAndroid Build Coastguard Worker 427*7688df22SAndroid Build Coastguard Worker /** 428*7688df22SAndroid Build Coastguard Worker * @num_waitchks: 429*7688df22SAndroid Build Coastguard Worker * 430*7688df22SAndroid Build Coastguard Worker * The number of wait checks to perform as part of this job. This 431*7688df22SAndroid Build Coastguard Worker * defines the length of the array pointed to by @waitchks. 432*7688df22SAndroid Build Coastguard Worker */ 433*7688df22SAndroid Build Coastguard Worker __u32 num_waitchks; 434*7688df22SAndroid Build Coastguard Worker 435*7688df22SAndroid Build Coastguard Worker /** 436*7688df22SAndroid Build Coastguard Worker * @waitchk_mask: 437*7688df22SAndroid Build Coastguard Worker * 438*7688df22SAndroid Build Coastguard Worker * Bitmask of valid wait checks. 439*7688df22SAndroid Build Coastguard Worker */ 440*7688df22SAndroid Build Coastguard Worker __u32 waitchk_mask; 441*7688df22SAndroid Build Coastguard Worker 442*7688df22SAndroid Build Coastguard Worker /** 443*7688df22SAndroid Build Coastguard Worker * @timeout: 444*7688df22SAndroid Build Coastguard Worker * 445*7688df22SAndroid Build Coastguard Worker * Timeout, in milliseconds, before this job is cancelled. 446*7688df22SAndroid Build Coastguard Worker */ 447*7688df22SAndroid Build Coastguard Worker __u32 timeout; 448*7688df22SAndroid Build Coastguard Worker 449*7688df22SAndroid Build Coastguard Worker /** 450*7688df22SAndroid Build Coastguard Worker * @syncpts: 451*7688df22SAndroid Build Coastguard Worker * 452*7688df22SAndroid Build Coastguard Worker * A pointer to an array of &struct drm_tegra_syncpt structures that 453*7688df22SAndroid Build Coastguard Worker * specify the syncpoint operations performed as part of this job. 454*7688df22SAndroid Build Coastguard Worker * The number of elements in the array must be equal to the value 455*7688df22SAndroid Build Coastguard Worker * given by @num_syncpts. 456*7688df22SAndroid Build Coastguard Worker */ 457*7688df22SAndroid Build Coastguard Worker __u64 syncpts; 458*7688df22SAndroid Build Coastguard Worker 459*7688df22SAndroid Build Coastguard Worker /** 460*7688df22SAndroid Build Coastguard Worker * @cmdbufs: 461*7688df22SAndroid Build Coastguard Worker * 462*7688df22SAndroid Build Coastguard Worker * A pointer to an array of &struct drm_tegra_cmdbuf structures that 463*7688df22SAndroid Build Coastguard Worker * define the command buffers to execute as part of this job. The 464*7688df22SAndroid Build Coastguard Worker * number of elements in the array must be equal to the value given 465*7688df22SAndroid Build Coastguard Worker * by @num_syncpts. 466*7688df22SAndroid Build Coastguard Worker */ 467*7688df22SAndroid Build Coastguard Worker __u64 cmdbufs; 468*7688df22SAndroid Build Coastguard Worker 469*7688df22SAndroid Build Coastguard Worker /** 470*7688df22SAndroid Build Coastguard Worker * @relocs: 471*7688df22SAndroid Build Coastguard Worker * 472*7688df22SAndroid Build Coastguard Worker * A pointer to an array of &struct drm_tegra_reloc structures that 473*7688df22SAndroid Build Coastguard Worker * specify the relocations that need to be performed before executing 474*7688df22SAndroid Build Coastguard Worker * this job. The number of elements in the array must be equal to the 475*7688df22SAndroid Build Coastguard Worker * value given by @num_relocs. 476*7688df22SAndroid Build Coastguard Worker */ 477*7688df22SAndroid Build Coastguard Worker __u64 relocs; 478*7688df22SAndroid Build Coastguard Worker 479*7688df22SAndroid Build Coastguard Worker /** 480*7688df22SAndroid Build Coastguard Worker * @waitchks: 481*7688df22SAndroid Build Coastguard Worker * 482*7688df22SAndroid Build Coastguard Worker * A pointer to an array of &struct drm_tegra_waitchk structures that 483*7688df22SAndroid Build Coastguard Worker * specify the wait checks to be performed while executing this job. 484*7688df22SAndroid Build Coastguard Worker * The number of elements in the array must be equal to the value 485*7688df22SAndroid Build Coastguard Worker * given by @num_waitchks. 486*7688df22SAndroid Build Coastguard Worker */ 487*7688df22SAndroid Build Coastguard Worker __u64 waitchks; 488*7688df22SAndroid Build Coastguard Worker 489*7688df22SAndroid Build Coastguard Worker /** 490*7688df22SAndroid Build Coastguard Worker * @fence: 491*7688df22SAndroid Build Coastguard Worker * 492*7688df22SAndroid Build Coastguard Worker * The threshold of the syncpoint associated with this job after it 493*7688df22SAndroid Build Coastguard Worker * has been completed. Set by the kernel upon successful completion of 494*7688df22SAndroid Build Coastguard Worker * the IOCTL. This can be used with the DRM_TEGRA_SYNCPT_WAIT IOCTL to 495*7688df22SAndroid Build Coastguard Worker * wait for this job to be finished. 496*7688df22SAndroid Build Coastguard Worker */ 497*7688df22SAndroid Build Coastguard Worker __u32 fence; 498*7688df22SAndroid Build Coastguard Worker 499*7688df22SAndroid Build Coastguard Worker /** 500*7688df22SAndroid Build Coastguard Worker * @reserved: 501*7688df22SAndroid Build Coastguard Worker * 502*7688df22SAndroid Build Coastguard Worker * This field is reserved for future use. Must be 0. 503*7688df22SAndroid Build Coastguard Worker */ 504*7688df22SAndroid Build Coastguard Worker __u32 reserved[5]; 505*7688df22SAndroid Build Coastguard Worker }; 506*7688df22SAndroid Build Coastguard Worker 507*7688df22SAndroid Build Coastguard Worker #define DRM_TEGRA_GEM_TILING_MODE_PITCH 0 508*7688df22SAndroid Build Coastguard Worker #define DRM_TEGRA_GEM_TILING_MODE_TILED 1 509*7688df22SAndroid Build Coastguard Worker #define DRM_TEGRA_GEM_TILING_MODE_BLOCK 2 510*7688df22SAndroid Build Coastguard Worker 511*7688df22SAndroid Build Coastguard Worker /** 512*7688df22SAndroid Build Coastguard Worker * struct drm_tegra_gem_set_tiling - parameters for the set tiling IOCTL 513*7688df22SAndroid Build Coastguard Worker */ 514*7688df22SAndroid Build Coastguard Worker struct drm_tegra_gem_set_tiling { 515*7688df22SAndroid Build Coastguard Worker /** 516*7688df22SAndroid Build Coastguard Worker * @handle: 517*7688df22SAndroid Build Coastguard Worker * 518*7688df22SAndroid Build Coastguard Worker * Handle to the GEM object for which to set the tiling parameters. 519*7688df22SAndroid Build Coastguard Worker */ 520*7688df22SAndroid Build Coastguard Worker __u32 handle; 521*7688df22SAndroid Build Coastguard Worker 522*7688df22SAndroid Build Coastguard Worker /** 523*7688df22SAndroid Build Coastguard Worker * @mode: 524*7688df22SAndroid Build Coastguard Worker * 525*7688df22SAndroid Build Coastguard Worker * The tiling mode to set. Must be one of: 526*7688df22SAndroid Build Coastguard Worker * 527*7688df22SAndroid Build Coastguard Worker * DRM_TEGRA_GEM_TILING_MODE_PITCH 528*7688df22SAndroid Build Coastguard Worker * pitch linear format 529*7688df22SAndroid Build Coastguard Worker * 530*7688df22SAndroid Build Coastguard Worker * DRM_TEGRA_GEM_TILING_MODE_TILED 531*7688df22SAndroid Build Coastguard Worker * 16x16 tiling format 532*7688df22SAndroid Build Coastguard Worker * 533*7688df22SAndroid Build Coastguard Worker * DRM_TEGRA_GEM_TILING_MODE_BLOCK 534*7688df22SAndroid Build Coastguard Worker * 16Bx2 tiling format 535*7688df22SAndroid Build Coastguard Worker */ 536*7688df22SAndroid Build Coastguard Worker __u32 mode; 537*7688df22SAndroid Build Coastguard Worker 538*7688df22SAndroid Build Coastguard Worker /** 539*7688df22SAndroid Build Coastguard Worker * @value: 540*7688df22SAndroid Build Coastguard Worker * 541*7688df22SAndroid Build Coastguard Worker * The value to set for the tiling mode parameter. 542*7688df22SAndroid Build Coastguard Worker */ 543*7688df22SAndroid Build Coastguard Worker __u32 value; 544*7688df22SAndroid Build Coastguard Worker 545*7688df22SAndroid Build Coastguard Worker /** 546*7688df22SAndroid Build Coastguard Worker * @pad: 547*7688df22SAndroid Build Coastguard Worker * 548*7688df22SAndroid Build Coastguard Worker * Structure padding that may be used in the future. Must be 0. 549*7688df22SAndroid Build Coastguard Worker */ 550*7688df22SAndroid Build Coastguard Worker __u32 pad; 551*7688df22SAndroid Build Coastguard Worker }; 552*7688df22SAndroid Build Coastguard Worker 553*7688df22SAndroid Build Coastguard Worker /** 554*7688df22SAndroid Build Coastguard Worker * struct drm_tegra_gem_get_tiling - parameters for the get tiling IOCTL 555*7688df22SAndroid Build Coastguard Worker */ 556*7688df22SAndroid Build Coastguard Worker struct drm_tegra_gem_get_tiling { 557*7688df22SAndroid Build Coastguard Worker /** 558*7688df22SAndroid Build Coastguard Worker * @handle: 559*7688df22SAndroid Build Coastguard Worker * 560*7688df22SAndroid Build Coastguard Worker * Handle to the GEM object for which to query the tiling parameters. 561*7688df22SAndroid Build Coastguard Worker */ 562*7688df22SAndroid Build Coastguard Worker __u32 handle; 563*7688df22SAndroid Build Coastguard Worker 564*7688df22SAndroid Build Coastguard Worker /** 565*7688df22SAndroid Build Coastguard Worker * @mode: 566*7688df22SAndroid Build Coastguard Worker * 567*7688df22SAndroid Build Coastguard Worker * The tiling mode currently associated with the GEM object. Set by 568*7688df22SAndroid Build Coastguard Worker * the kernel upon successful completion of the IOCTL. 569*7688df22SAndroid Build Coastguard Worker */ 570*7688df22SAndroid Build Coastguard Worker __u32 mode; 571*7688df22SAndroid Build Coastguard Worker 572*7688df22SAndroid Build Coastguard Worker /** 573*7688df22SAndroid Build Coastguard Worker * @value: 574*7688df22SAndroid Build Coastguard Worker * 575*7688df22SAndroid Build Coastguard Worker * The tiling mode parameter currently associated with the GEM object. 576*7688df22SAndroid Build Coastguard Worker * Set by the kernel upon successful completion of the IOCTL. 577*7688df22SAndroid Build Coastguard Worker */ 578*7688df22SAndroid Build Coastguard Worker __u32 value; 579*7688df22SAndroid Build Coastguard Worker 580*7688df22SAndroid Build Coastguard Worker /** 581*7688df22SAndroid Build Coastguard Worker * @pad: 582*7688df22SAndroid Build Coastguard Worker * 583*7688df22SAndroid Build Coastguard Worker * Structure padding that may be used in the future. Must be 0. 584*7688df22SAndroid Build Coastguard Worker */ 585*7688df22SAndroid Build Coastguard Worker __u32 pad; 586*7688df22SAndroid Build Coastguard Worker }; 587*7688df22SAndroid Build Coastguard Worker 588*7688df22SAndroid Build Coastguard Worker #define DRM_TEGRA_GEM_BOTTOM_UP (1 << 0) 589*7688df22SAndroid Build Coastguard Worker #define DRM_TEGRA_GEM_FLAGS (DRM_TEGRA_GEM_BOTTOM_UP) 590*7688df22SAndroid Build Coastguard Worker 591*7688df22SAndroid Build Coastguard Worker /** 592*7688df22SAndroid Build Coastguard Worker * struct drm_tegra_gem_set_flags - parameters for the set flags IOCTL 593*7688df22SAndroid Build Coastguard Worker */ 594*7688df22SAndroid Build Coastguard Worker struct drm_tegra_gem_set_flags { 595*7688df22SAndroid Build Coastguard Worker /** 596*7688df22SAndroid Build Coastguard Worker * @handle: 597*7688df22SAndroid Build Coastguard Worker * 598*7688df22SAndroid Build Coastguard Worker * Handle to the GEM object for which to set the flags. 599*7688df22SAndroid Build Coastguard Worker */ 600*7688df22SAndroid Build Coastguard Worker __u32 handle; 601*7688df22SAndroid Build Coastguard Worker 602*7688df22SAndroid Build Coastguard Worker /** 603*7688df22SAndroid Build Coastguard Worker * @flags: 604*7688df22SAndroid Build Coastguard Worker * 605*7688df22SAndroid Build Coastguard Worker * The flags to set for the GEM object. 606*7688df22SAndroid Build Coastguard Worker */ 607*7688df22SAndroid Build Coastguard Worker __u32 flags; 608*7688df22SAndroid Build Coastguard Worker }; 609*7688df22SAndroid Build Coastguard Worker 610*7688df22SAndroid Build Coastguard Worker /** 611*7688df22SAndroid Build Coastguard Worker * struct drm_tegra_gem_get_flags - parameters for the get flags IOCTL 612*7688df22SAndroid Build Coastguard Worker */ 613*7688df22SAndroid Build Coastguard Worker struct drm_tegra_gem_get_flags { 614*7688df22SAndroid Build Coastguard Worker /** 615*7688df22SAndroid Build Coastguard Worker * @handle: 616*7688df22SAndroid Build Coastguard Worker * 617*7688df22SAndroid Build Coastguard Worker * Handle to the GEM object for which to query the flags. 618*7688df22SAndroid Build Coastguard Worker */ 619*7688df22SAndroid Build Coastguard Worker __u32 handle; 620*7688df22SAndroid Build Coastguard Worker 621*7688df22SAndroid Build Coastguard Worker /** 622*7688df22SAndroid Build Coastguard Worker * @flags: 623*7688df22SAndroid Build Coastguard Worker * 624*7688df22SAndroid Build Coastguard Worker * The flags currently associated with the GEM object. Set by the 625*7688df22SAndroid Build Coastguard Worker * kernel upon successful completion of the IOCTL. 626*7688df22SAndroid Build Coastguard Worker */ 627*7688df22SAndroid Build Coastguard Worker __u32 flags; 628*7688df22SAndroid Build Coastguard Worker }; 629*7688df22SAndroid Build Coastguard Worker 630*7688df22SAndroid Build Coastguard Worker #define DRM_TEGRA_GEM_CREATE 0x00 631*7688df22SAndroid Build Coastguard Worker #define DRM_TEGRA_GEM_MMAP 0x01 632*7688df22SAndroid Build Coastguard Worker #define DRM_TEGRA_SYNCPT_READ 0x02 633*7688df22SAndroid Build Coastguard Worker #define DRM_TEGRA_SYNCPT_INCR 0x03 634*7688df22SAndroid Build Coastguard Worker #define DRM_TEGRA_SYNCPT_WAIT 0x04 635*7688df22SAndroid Build Coastguard Worker #define DRM_TEGRA_OPEN_CHANNEL 0x05 636*7688df22SAndroid Build Coastguard Worker #define DRM_TEGRA_CLOSE_CHANNEL 0x06 637*7688df22SAndroid Build Coastguard Worker #define DRM_TEGRA_GET_SYNCPT 0x07 638*7688df22SAndroid Build Coastguard Worker #define DRM_TEGRA_SUBMIT 0x08 639*7688df22SAndroid Build Coastguard Worker #define DRM_TEGRA_GET_SYNCPT_BASE 0x09 640*7688df22SAndroid Build Coastguard Worker #define DRM_TEGRA_GEM_SET_TILING 0x0a 641*7688df22SAndroid Build Coastguard Worker #define DRM_TEGRA_GEM_GET_TILING 0x0b 642*7688df22SAndroid Build Coastguard Worker #define DRM_TEGRA_GEM_SET_FLAGS 0x0c 643*7688df22SAndroid Build Coastguard Worker #define DRM_TEGRA_GEM_GET_FLAGS 0x0d 644*7688df22SAndroid Build Coastguard Worker 645*7688df22SAndroid Build Coastguard Worker #define DRM_IOCTL_TEGRA_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_CREATE, struct drm_tegra_gem_create) 646*7688df22SAndroid Build Coastguard Worker #define DRM_IOCTL_TEGRA_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_MMAP, struct drm_tegra_gem_mmap) 647*7688df22SAndroid Build Coastguard Worker #define DRM_IOCTL_TEGRA_SYNCPT_READ DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SYNCPT_READ, struct drm_tegra_syncpt_read) 648*7688df22SAndroid Build Coastguard Worker #define DRM_IOCTL_TEGRA_SYNCPT_INCR DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SYNCPT_INCR, struct drm_tegra_syncpt_incr) 649*7688df22SAndroid Build Coastguard Worker #define DRM_IOCTL_TEGRA_SYNCPT_WAIT DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SYNCPT_WAIT, struct drm_tegra_syncpt_wait) 650*7688df22SAndroid Build Coastguard Worker #define DRM_IOCTL_TEGRA_OPEN_CHANNEL DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_OPEN_CHANNEL, struct drm_tegra_open_channel) 651*7688df22SAndroid Build Coastguard Worker #define DRM_IOCTL_TEGRA_CLOSE_CHANNEL DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_CLOSE_CHANNEL, struct drm_tegra_close_channel) 652*7688df22SAndroid Build Coastguard Worker #define DRM_IOCTL_TEGRA_GET_SYNCPT DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GET_SYNCPT, struct drm_tegra_get_syncpt) 653*7688df22SAndroid Build Coastguard Worker #define DRM_IOCTL_TEGRA_SUBMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SUBMIT, struct drm_tegra_submit) 654*7688df22SAndroid Build Coastguard Worker #define DRM_IOCTL_TEGRA_GET_SYNCPT_BASE DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GET_SYNCPT_BASE, struct drm_tegra_get_syncpt_base) 655*7688df22SAndroid Build Coastguard Worker #define DRM_IOCTL_TEGRA_GEM_SET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_SET_TILING, struct drm_tegra_gem_set_tiling) 656*7688df22SAndroid Build Coastguard Worker #define DRM_IOCTL_TEGRA_GEM_GET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_GET_TILING, struct drm_tegra_gem_get_tiling) 657*7688df22SAndroid Build Coastguard Worker #define DRM_IOCTL_TEGRA_GEM_SET_FLAGS DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_SET_FLAGS, struct drm_tegra_gem_set_flags) 658*7688df22SAndroid Build Coastguard Worker #define DRM_IOCTL_TEGRA_GEM_GET_FLAGS DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_GET_FLAGS, struct drm_tegra_gem_get_flags) 659*7688df22SAndroid Build Coastguard Worker 660*7688df22SAndroid Build Coastguard Worker /* New Tegra DRM UAPI */ 661*7688df22SAndroid Build Coastguard Worker 662*7688df22SAndroid Build Coastguard Worker /* 663*7688df22SAndroid Build Coastguard Worker * Reported by the driver in the `capabilities` field. 664*7688df22SAndroid Build Coastguard Worker * 665*7688df22SAndroid Build Coastguard Worker * DRM_TEGRA_CHANNEL_CAP_CACHE_COHERENT: If set, the engine is cache coherent 666*7688df22SAndroid Build Coastguard Worker * with regard to the system memory. 667*7688df22SAndroid Build Coastguard Worker */ 668*7688df22SAndroid Build Coastguard Worker #define DRM_TEGRA_CHANNEL_CAP_CACHE_COHERENT (1 << 0) 669*7688df22SAndroid Build Coastguard Worker 670*7688df22SAndroid Build Coastguard Worker struct drm_tegra_channel_open { 671*7688df22SAndroid Build Coastguard Worker /** 672*7688df22SAndroid Build Coastguard Worker * @host1x_class: [in] 673*7688df22SAndroid Build Coastguard Worker * 674*7688df22SAndroid Build Coastguard Worker * Host1x class of the engine that will be programmed using this 675*7688df22SAndroid Build Coastguard Worker * channel. 676*7688df22SAndroid Build Coastguard Worker */ 677*7688df22SAndroid Build Coastguard Worker __u32 host1x_class; 678*7688df22SAndroid Build Coastguard Worker 679*7688df22SAndroid Build Coastguard Worker /** 680*7688df22SAndroid Build Coastguard Worker * @flags: [in] 681*7688df22SAndroid Build Coastguard Worker * 682*7688df22SAndroid Build Coastguard Worker * Flags. 683*7688df22SAndroid Build Coastguard Worker */ 684*7688df22SAndroid Build Coastguard Worker __u32 flags; 685*7688df22SAndroid Build Coastguard Worker 686*7688df22SAndroid Build Coastguard Worker /** 687*7688df22SAndroid Build Coastguard Worker * @context: [out] 688*7688df22SAndroid Build Coastguard Worker * 689*7688df22SAndroid Build Coastguard Worker * Opaque identifier corresponding to the opened channel. 690*7688df22SAndroid Build Coastguard Worker */ 691*7688df22SAndroid Build Coastguard Worker __u32 context; 692*7688df22SAndroid Build Coastguard Worker 693*7688df22SAndroid Build Coastguard Worker /** 694*7688df22SAndroid Build Coastguard Worker * @version: [out] 695*7688df22SAndroid Build Coastguard Worker * 696*7688df22SAndroid Build Coastguard Worker * Version of the engine hardware. This can be used by userspace 697*7688df22SAndroid Build Coastguard Worker * to determine how the engine needs to be programmed. 698*7688df22SAndroid Build Coastguard Worker */ 699*7688df22SAndroid Build Coastguard Worker __u32 version; 700*7688df22SAndroid Build Coastguard Worker 701*7688df22SAndroid Build Coastguard Worker /** 702*7688df22SAndroid Build Coastguard Worker * @capabilities: [out] 703*7688df22SAndroid Build Coastguard Worker * 704*7688df22SAndroid Build Coastguard Worker * Flags describing the hardware capabilities. 705*7688df22SAndroid Build Coastguard Worker */ 706*7688df22SAndroid Build Coastguard Worker __u32 capabilities; 707*7688df22SAndroid Build Coastguard Worker __u32 padding; 708*7688df22SAndroid Build Coastguard Worker }; 709*7688df22SAndroid Build Coastguard Worker 710*7688df22SAndroid Build Coastguard Worker struct drm_tegra_channel_close { 711*7688df22SAndroid Build Coastguard Worker /** 712*7688df22SAndroid Build Coastguard Worker * @context: [in] 713*7688df22SAndroid Build Coastguard Worker * 714*7688df22SAndroid Build Coastguard Worker * Identifier of the channel to close. 715*7688df22SAndroid Build Coastguard Worker */ 716*7688df22SAndroid Build Coastguard Worker __u32 context; 717*7688df22SAndroid Build Coastguard Worker __u32 padding; 718*7688df22SAndroid Build Coastguard Worker }; 719*7688df22SAndroid Build Coastguard Worker 720*7688df22SAndroid Build Coastguard Worker /* 721*7688df22SAndroid Build Coastguard Worker * Mapping flags that can be used to influence how the mapping is created. 722*7688df22SAndroid Build Coastguard Worker * 723*7688df22SAndroid Build Coastguard Worker * DRM_TEGRA_CHANNEL_MAP_READ: create mapping that allows HW read access 724*7688df22SAndroid Build Coastguard Worker * DRM_TEGRA_CHANNEL_MAP_WRITE: create mapping that allows HW write access 725*7688df22SAndroid Build Coastguard Worker */ 726*7688df22SAndroid Build Coastguard Worker #define DRM_TEGRA_CHANNEL_MAP_READ (1 << 0) 727*7688df22SAndroid Build Coastguard Worker #define DRM_TEGRA_CHANNEL_MAP_WRITE (1 << 1) 728*7688df22SAndroid Build Coastguard Worker #define DRM_TEGRA_CHANNEL_MAP_READ_WRITE (DRM_TEGRA_CHANNEL_MAP_READ | \ 729*7688df22SAndroid Build Coastguard Worker DRM_TEGRA_CHANNEL_MAP_WRITE) 730*7688df22SAndroid Build Coastguard Worker 731*7688df22SAndroid Build Coastguard Worker struct drm_tegra_channel_map { 732*7688df22SAndroid Build Coastguard Worker /** 733*7688df22SAndroid Build Coastguard Worker * @context: [in] 734*7688df22SAndroid Build Coastguard Worker * 735*7688df22SAndroid Build Coastguard Worker * Identifier of the channel to which make memory available for. 736*7688df22SAndroid Build Coastguard Worker */ 737*7688df22SAndroid Build Coastguard Worker __u32 context; 738*7688df22SAndroid Build Coastguard Worker 739*7688df22SAndroid Build Coastguard Worker /** 740*7688df22SAndroid Build Coastguard Worker * @handle: [in] 741*7688df22SAndroid Build Coastguard Worker * 742*7688df22SAndroid Build Coastguard Worker * GEM handle of the memory to map. 743*7688df22SAndroid Build Coastguard Worker */ 744*7688df22SAndroid Build Coastguard Worker __u32 handle; 745*7688df22SAndroid Build Coastguard Worker 746*7688df22SAndroid Build Coastguard Worker /** 747*7688df22SAndroid Build Coastguard Worker * @flags: [in] 748*7688df22SAndroid Build Coastguard Worker * 749*7688df22SAndroid Build Coastguard Worker * Flags. 750*7688df22SAndroid Build Coastguard Worker */ 751*7688df22SAndroid Build Coastguard Worker __u32 flags; 752*7688df22SAndroid Build Coastguard Worker 753*7688df22SAndroid Build Coastguard Worker /** 754*7688df22SAndroid Build Coastguard Worker * @mapping: [out] 755*7688df22SAndroid Build Coastguard Worker * 756*7688df22SAndroid Build Coastguard Worker * Identifier corresponding to the mapping, to be used for 757*7688df22SAndroid Build Coastguard Worker * relocations or unmapping later. 758*7688df22SAndroid Build Coastguard Worker */ 759*7688df22SAndroid Build Coastguard Worker __u32 mapping; 760*7688df22SAndroid Build Coastguard Worker }; 761*7688df22SAndroid Build Coastguard Worker 762*7688df22SAndroid Build Coastguard Worker struct drm_tegra_channel_unmap { 763*7688df22SAndroid Build Coastguard Worker /** 764*7688df22SAndroid Build Coastguard Worker * @context: [in] 765*7688df22SAndroid Build Coastguard Worker * 766*7688df22SAndroid Build Coastguard Worker * Channel identifier of the channel to unmap memory from. 767*7688df22SAndroid Build Coastguard Worker */ 768*7688df22SAndroid Build Coastguard Worker __u32 context; 769*7688df22SAndroid Build Coastguard Worker 770*7688df22SAndroid Build Coastguard Worker /** 771*7688df22SAndroid Build Coastguard Worker * @mapping: [in] 772*7688df22SAndroid Build Coastguard Worker * 773*7688df22SAndroid Build Coastguard Worker * Mapping identifier of the memory mapping to unmap. 774*7688df22SAndroid Build Coastguard Worker */ 775*7688df22SAndroid Build Coastguard Worker __u32 mapping; 776*7688df22SAndroid Build Coastguard Worker }; 777*7688df22SAndroid Build Coastguard Worker 778*7688df22SAndroid Build Coastguard Worker /* Submission */ 779*7688df22SAndroid Build Coastguard Worker 780*7688df22SAndroid Build Coastguard Worker /** 781*7688df22SAndroid Build Coastguard Worker * Specify that bit 39 of the patched-in address should be set to switch 782*7688df22SAndroid Build Coastguard Worker * swizzling between Tegra and non-Tegra sector layout on systems that store 783*7688df22SAndroid Build Coastguard Worker * surfaces in system memory in non-Tegra sector layout. 784*7688df22SAndroid Build Coastguard Worker */ 785*7688df22SAndroid Build Coastguard Worker #define DRM_TEGRA_SUBMIT_RELOC_SECTOR_LAYOUT (1 << 0) 786*7688df22SAndroid Build Coastguard Worker 787*7688df22SAndroid Build Coastguard Worker struct drm_tegra_submit_buf { 788*7688df22SAndroid Build Coastguard Worker /** 789*7688df22SAndroid Build Coastguard Worker * @mapping: [in] 790*7688df22SAndroid Build Coastguard Worker * 791*7688df22SAndroid Build Coastguard Worker * Identifier of the mapping to use in the submission. 792*7688df22SAndroid Build Coastguard Worker */ 793*7688df22SAndroid Build Coastguard Worker __u32 mapping; 794*7688df22SAndroid Build Coastguard Worker 795*7688df22SAndroid Build Coastguard Worker /** 796*7688df22SAndroid Build Coastguard Worker * @flags: [in] 797*7688df22SAndroid Build Coastguard Worker * 798*7688df22SAndroid Build Coastguard Worker * Flags. 799*7688df22SAndroid Build Coastguard Worker */ 800*7688df22SAndroid Build Coastguard Worker __u32 flags; 801*7688df22SAndroid Build Coastguard Worker 802*7688df22SAndroid Build Coastguard Worker /** 803*7688df22SAndroid Build Coastguard Worker * Information for relocation patching. 804*7688df22SAndroid Build Coastguard Worker */ 805*7688df22SAndroid Build Coastguard Worker struct { 806*7688df22SAndroid Build Coastguard Worker /** 807*7688df22SAndroid Build Coastguard Worker * @target_offset: [in] 808*7688df22SAndroid Build Coastguard Worker * 809*7688df22SAndroid Build Coastguard Worker * Offset from the start of the mapping of the data whose 810*7688df22SAndroid Build Coastguard Worker * address is to be patched into the gather. 811*7688df22SAndroid Build Coastguard Worker */ 812*7688df22SAndroid Build Coastguard Worker __u64 target_offset; 813*7688df22SAndroid Build Coastguard Worker 814*7688df22SAndroid Build Coastguard Worker /** 815*7688df22SAndroid Build Coastguard Worker * @gather_offset_words: [in] 816*7688df22SAndroid Build Coastguard Worker * 817*7688df22SAndroid Build Coastguard Worker * Offset in words from the start of the gather data to 818*7688df22SAndroid Build Coastguard Worker * where the address should be patched into. 819*7688df22SAndroid Build Coastguard Worker */ 820*7688df22SAndroid Build Coastguard Worker __u32 gather_offset_words; 821*7688df22SAndroid Build Coastguard Worker 822*7688df22SAndroid Build Coastguard Worker /** 823*7688df22SAndroid Build Coastguard Worker * @shift: [in] 824*7688df22SAndroid Build Coastguard Worker * 825*7688df22SAndroid Build Coastguard Worker * Number of bits the address should be shifted right before 826*7688df22SAndroid Build Coastguard Worker * patching in. 827*7688df22SAndroid Build Coastguard Worker */ 828*7688df22SAndroid Build Coastguard Worker __u32 shift; 829*7688df22SAndroid Build Coastguard Worker } reloc; 830*7688df22SAndroid Build Coastguard Worker }; 831*7688df22SAndroid Build Coastguard Worker 832*7688df22SAndroid Build Coastguard Worker /** 833*7688df22SAndroid Build Coastguard Worker * Execute `words` words of Host1x opcodes specified in the `gather_data_ptr` 834*7688df22SAndroid Build Coastguard Worker * buffer. Each GATHER_UPTR command uses successive words from the buffer. 835*7688df22SAndroid Build Coastguard Worker */ 836*7688df22SAndroid Build Coastguard Worker #define DRM_TEGRA_SUBMIT_CMD_GATHER_UPTR 0 837*7688df22SAndroid Build Coastguard Worker /** 838*7688df22SAndroid Build Coastguard Worker * Wait for a syncpoint to reach a value before continuing with further 839*7688df22SAndroid Build Coastguard Worker * commands. 840*7688df22SAndroid Build Coastguard Worker */ 841*7688df22SAndroid Build Coastguard Worker #define DRM_TEGRA_SUBMIT_CMD_WAIT_SYNCPT 1 842*7688df22SAndroid Build Coastguard Worker /** 843*7688df22SAndroid Build Coastguard Worker * Wait for a syncpoint to reach a value before continuing with further 844*7688df22SAndroid Build Coastguard Worker * commands. The threshold is calculated relative to the start of the job. 845*7688df22SAndroid Build Coastguard Worker */ 846*7688df22SAndroid Build Coastguard Worker #define DRM_TEGRA_SUBMIT_CMD_WAIT_SYNCPT_RELATIVE 2 847*7688df22SAndroid Build Coastguard Worker 848*7688df22SAndroid Build Coastguard Worker struct drm_tegra_submit_cmd_gather_uptr { 849*7688df22SAndroid Build Coastguard Worker __u32 words; 850*7688df22SAndroid Build Coastguard Worker __u32 reserved[3]; 851*7688df22SAndroid Build Coastguard Worker }; 852*7688df22SAndroid Build Coastguard Worker 853*7688df22SAndroid Build Coastguard Worker struct drm_tegra_submit_cmd_wait_syncpt { 854*7688df22SAndroid Build Coastguard Worker __u32 id; 855*7688df22SAndroid Build Coastguard Worker __u32 value; 856*7688df22SAndroid Build Coastguard Worker __u32 reserved[2]; 857*7688df22SAndroid Build Coastguard Worker }; 858*7688df22SAndroid Build Coastguard Worker 859*7688df22SAndroid Build Coastguard Worker struct drm_tegra_submit_cmd { 860*7688df22SAndroid Build Coastguard Worker /** 861*7688df22SAndroid Build Coastguard Worker * @type: [in] 862*7688df22SAndroid Build Coastguard Worker * 863*7688df22SAndroid Build Coastguard Worker * Command type to execute. One of the DRM_TEGRA_SUBMIT_CMD* 864*7688df22SAndroid Build Coastguard Worker * defines. 865*7688df22SAndroid Build Coastguard Worker */ 866*7688df22SAndroid Build Coastguard Worker __u32 type; 867*7688df22SAndroid Build Coastguard Worker 868*7688df22SAndroid Build Coastguard Worker /** 869*7688df22SAndroid Build Coastguard Worker * @flags: [in] 870*7688df22SAndroid Build Coastguard Worker * 871*7688df22SAndroid Build Coastguard Worker * Flags. 872*7688df22SAndroid Build Coastguard Worker */ 873*7688df22SAndroid Build Coastguard Worker __u32 flags; 874*7688df22SAndroid Build Coastguard Worker 875*7688df22SAndroid Build Coastguard Worker union { 876*7688df22SAndroid Build Coastguard Worker struct drm_tegra_submit_cmd_gather_uptr gather_uptr; 877*7688df22SAndroid Build Coastguard Worker struct drm_tegra_submit_cmd_wait_syncpt wait_syncpt; 878*7688df22SAndroid Build Coastguard Worker __u32 reserved[4]; 879*7688df22SAndroid Build Coastguard Worker }; 880*7688df22SAndroid Build Coastguard Worker }; 881*7688df22SAndroid Build Coastguard Worker 882*7688df22SAndroid Build Coastguard Worker struct drm_tegra_submit_syncpt { 883*7688df22SAndroid Build Coastguard Worker /** 884*7688df22SAndroid Build Coastguard Worker * @id: [in] 885*7688df22SAndroid Build Coastguard Worker * 886*7688df22SAndroid Build Coastguard Worker * ID of the syncpoint that the job will increment. 887*7688df22SAndroid Build Coastguard Worker */ 888*7688df22SAndroid Build Coastguard Worker __u32 id; 889*7688df22SAndroid Build Coastguard Worker 890*7688df22SAndroid Build Coastguard Worker /** 891*7688df22SAndroid Build Coastguard Worker * @flags: [in] 892*7688df22SAndroid Build Coastguard Worker * 893*7688df22SAndroid Build Coastguard Worker * Flags. 894*7688df22SAndroid Build Coastguard Worker */ 895*7688df22SAndroid Build Coastguard Worker __u32 flags; 896*7688df22SAndroid Build Coastguard Worker 897*7688df22SAndroid Build Coastguard Worker /** 898*7688df22SAndroid Build Coastguard Worker * @increments: [in] 899*7688df22SAndroid Build Coastguard Worker * 900*7688df22SAndroid Build Coastguard Worker * Number of times the job will increment this syncpoint. 901*7688df22SAndroid Build Coastguard Worker */ 902*7688df22SAndroid Build Coastguard Worker __u32 increments; 903*7688df22SAndroid Build Coastguard Worker 904*7688df22SAndroid Build Coastguard Worker /** 905*7688df22SAndroid Build Coastguard Worker * @value: [out] 906*7688df22SAndroid Build Coastguard Worker * 907*7688df22SAndroid Build Coastguard Worker * Value the syncpoint will have once the job has completed all 908*7688df22SAndroid Build Coastguard Worker * its specified syncpoint increments. 909*7688df22SAndroid Build Coastguard Worker * 910*7688df22SAndroid Build Coastguard Worker * Note that the kernel may increment the syncpoint before or after 911*7688df22SAndroid Build Coastguard Worker * the job. These increments are not reflected in this field. 912*7688df22SAndroid Build Coastguard Worker * 913*7688df22SAndroid Build Coastguard Worker * If the job hangs or times out, not all of the increments may 914*7688df22SAndroid Build Coastguard Worker * get executed. 915*7688df22SAndroid Build Coastguard Worker */ 916*7688df22SAndroid Build Coastguard Worker __u32 value; 917*7688df22SAndroid Build Coastguard Worker }; 918*7688df22SAndroid Build Coastguard Worker 919*7688df22SAndroid Build Coastguard Worker struct drm_tegra_channel_submit { 920*7688df22SAndroid Build Coastguard Worker /** 921*7688df22SAndroid Build Coastguard Worker * @context: [in] 922*7688df22SAndroid Build Coastguard Worker * 923*7688df22SAndroid Build Coastguard Worker * Identifier of the channel to submit this job to. 924*7688df22SAndroid Build Coastguard Worker */ 925*7688df22SAndroid Build Coastguard Worker __u32 context; 926*7688df22SAndroid Build Coastguard Worker 927*7688df22SAndroid Build Coastguard Worker /** 928*7688df22SAndroid Build Coastguard Worker * @num_bufs: [in] 929*7688df22SAndroid Build Coastguard Worker * 930*7688df22SAndroid Build Coastguard Worker * Number of elements in the `bufs_ptr` array. 931*7688df22SAndroid Build Coastguard Worker */ 932*7688df22SAndroid Build Coastguard Worker __u32 num_bufs; 933*7688df22SAndroid Build Coastguard Worker 934*7688df22SAndroid Build Coastguard Worker /** 935*7688df22SAndroid Build Coastguard Worker * @num_cmds: [in] 936*7688df22SAndroid Build Coastguard Worker * 937*7688df22SAndroid Build Coastguard Worker * Number of elements in the `cmds_ptr` array. 938*7688df22SAndroid Build Coastguard Worker */ 939*7688df22SAndroid Build Coastguard Worker __u32 num_cmds; 940*7688df22SAndroid Build Coastguard Worker 941*7688df22SAndroid Build Coastguard Worker /** 942*7688df22SAndroid Build Coastguard Worker * @gather_data_words: [in] 943*7688df22SAndroid Build Coastguard Worker * 944*7688df22SAndroid Build Coastguard Worker * Number of 32-bit words in the `gather_data_ptr` array. 945*7688df22SAndroid Build Coastguard Worker */ 946*7688df22SAndroid Build Coastguard Worker __u32 gather_data_words; 947*7688df22SAndroid Build Coastguard Worker 948*7688df22SAndroid Build Coastguard Worker /** 949*7688df22SAndroid Build Coastguard Worker * @bufs_ptr: [in] 950*7688df22SAndroid Build Coastguard Worker * 951*7688df22SAndroid Build Coastguard Worker * Pointer to an array of drm_tegra_submit_buf structures. 952*7688df22SAndroid Build Coastguard Worker */ 953*7688df22SAndroid Build Coastguard Worker __u64 bufs_ptr; 954*7688df22SAndroid Build Coastguard Worker 955*7688df22SAndroid Build Coastguard Worker /** 956*7688df22SAndroid Build Coastguard Worker * @cmds_ptr: [in] 957*7688df22SAndroid Build Coastguard Worker * 958*7688df22SAndroid Build Coastguard Worker * Pointer to an array of drm_tegra_submit_cmd structures. 959*7688df22SAndroid Build Coastguard Worker */ 960*7688df22SAndroid Build Coastguard Worker __u64 cmds_ptr; 961*7688df22SAndroid Build Coastguard Worker 962*7688df22SAndroid Build Coastguard Worker /** 963*7688df22SAndroid Build Coastguard Worker * @gather_data_ptr: [in] 964*7688df22SAndroid Build Coastguard Worker * 965*7688df22SAndroid Build Coastguard Worker * Pointer to an array of Host1x opcodes to be used by GATHER_UPTR 966*7688df22SAndroid Build Coastguard Worker * commands. 967*7688df22SAndroid Build Coastguard Worker */ 968*7688df22SAndroid Build Coastguard Worker __u64 gather_data_ptr; 969*7688df22SAndroid Build Coastguard Worker 970*7688df22SAndroid Build Coastguard Worker /** 971*7688df22SAndroid Build Coastguard Worker * @syncobj_in: [in] 972*7688df22SAndroid Build Coastguard Worker * 973*7688df22SAndroid Build Coastguard Worker * Handle for DRM syncobj that will be waited before submission. 974*7688df22SAndroid Build Coastguard Worker * Ignored if zero. 975*7688df22SAndroid Build Coastguard Worker */ 976*7688df22SAndroid Build Coastguard Worker __u32 syncobj_in; 977*7688df22SAndroid Build Coastguard Worker 978*7688df22SAndroid Build Coastguard Worker /** 979*7688df22SAndroid Build Coastguard Worker * @syncobj_out: [in] 980*7688df22SAndroid Build Coastguard Worker * 981*7688df22SAndroid Build Coastguard Worker * Handle for DRM syncobj that will have its fence replaced with 982*7688df22SAndroid Build Coastguard Worker * the job's completion fence. Ignored if zero. 983*7688df22SAndroid Build Coastguard Worker */ 984*7688df22SAndroid Build Coastguard Worker __u32 syncobj_out; 985*7688df22SAndroid Build Coastguard Worker 986*7688df22SAndroid Build Coastguard Worker /** 987*7688df22SAndroid Build Coastguard Worker * @syncpt_incr: [in,out] 988*7688df22SAndroid Build Coastguard Worker * 989*7688df22SAndroid Build Coastguard Worker * Information about the syncpoint the job will increment. 990*7688df22SAndroid Build Coastguard Worker */ 991*7688df22SAndroid Build Coastguard Worker struct drm_tegra_submit_syncpt syncpt; 992*7688df22SAndroid Build Coastguard Worker }; 993*7688df22SAndroid Build Coastguard Worker 994*7688df22SAndroid Build Coastguard Worker struct drm_tegra_syncpoint_allocate { 995*7688df22SAndroid Build Coastguard Worker /** 996*7688df22SAndroid Build Coastguard Worker * @id: [out] 997*7688df22SAndroid Build Coastguard Worker * 998*7688df22SAndroid Build Coastguard Worker * ID of allocated syncpoint. 999*7688df22SAndroid Build Coastguard Worker */ 1000*7688df22SAndroid Build Coastguard Worker __u32 id; 1001*7688df22SAndroid Build Coastguard Worker __u32 padding; 1002*7688df22SAndroid Build Coastguard Worker }; 1003*7688df22SAndroid Build Coastguard Worker 1004*7688df22SAndroid Build Coastguard Worker struct drm_tegra_syncpoint_free { 1005*7688df22SAndroid Build Coastguard Worker /** 1006*7688df22SAndroid Build Coastguard Worker * @id: [in] 1007*7688df22SAndroid Build Coastguard Worker * 1008*7688df22SAndroid Build Coastguard Worker * ID of syncpoint to free. 1009*7688df22SAndroid Build Coastguard Worker */ 1010*7688df22SAndroid Build Coastguard Worker __u32 id; 1011*7688df22SAndroid Build Coastguard Worker __u32 padding; 1012*7688df22SAndroid Build Coastguard Worker }; 1013*7688df22SAndroid Build Coastguard Worker 1014*7688df22SAndroid Build Coastguard Worker struct drm_tegra_syncpoint_wait { 1015*7688df22SAndroid Build Coastguard Worker /** 1016*7688df22SAndroid Build Coastguard Worker * @timeout: [in] 1017*7688df22SAndroid Build Coastguard Worker * 1018*7688df22SAndroid Build Coastguard Worker * Absolute timestamp at which the wait will time out. 1019*7688df22SAndroid Build Coastguard Worker */ 1020*7688df22SAndroid Build Coastguard Worker __s64 timeout_ns; 1021*7688df22SAndroid Build Coastguard Worker 1022*7688df22SAndroid Build Coastguard Worker /** 1023*7688df22SAndroid Build Coastguard Worker * @id: [in] 1024*7688df22SAndroid Build Coastguard Worker * 1025*7688df22SAndroid Build Coastguard Worker * ID of syncpoint to wait on. 1026*7688df22SAndroid Build Coastguard Worker */ 1027*7688df22SAndroid Build Coastguard Worker __u32 id; 1028*7688df22SAndroid Build Coastguard Worker 1029*7688df22SAndroid Build Coastguard Worker /** 1030*7688df22SAndroid Build Coastguard Worker * @threshold: [in] 1031*7688df22SAndroid Build Coastguard Worker * 1032*7688df22SAndroid Build Coastguard Worker * Threshold to wait for. 1033*7688df22SAndroid Build Coastguard Worker */ 1034*7688df22SAndroid Build Coastguard Worker __u32 threshold; 1035*7688df22SAndroid Build Coastguard Worker 1036*7688df22SAndroid Build Coastguard Worker /** 1037*7688df22SAndroid Build Coastguard Worker * @value: [out] 1038*7688df22SAndroid Build Coastguard Worker * 1039*7688df22SAndroid Build Coastguard Worker * Value of the syncpoint upon wait completion. 1040*7688df22SAndroid Build Coastguard Worker */ 1041*7688df22SAndroid Build Coastguard Worker __u32 value; 1042*7688df22SAndroid Build Coastguard Worker 1043*7688df22SAndroid Build Coastguard Worker __u32 padding; 1044*7688df22SAndroid Build Coastguard Worker }; 1045*7688df22SAndroid Build Coastguard Worker 1046*7688df22SAndroid Build Coastguard Worker #define DRM_IOCTL_TEGRA_CHANNEL_OPEN DRM_IOWR(DRM_COMMAND_BASE + 0x10, struct drm_tegra_channel_open) 1047*7688df22SAndroid Build Coastguard Worker #define DRM_IOCTL_TEGRA_CHANNEL_CLOSE DRM_IOWR(DRM_COMMAND_BASE + 0x11, struct drm_tegra_channel_close) 1048*7688df22SAndroid Build Coastguard Worker #define DRM_IOCTL_TEGRA_CHANNEL_MAP DRM_IOWR(DRM_COMMAND_BASE + 0x12, struct drm_tegra_channel_map) 1049*7688df22SAndroid Build Coastguard Worker #define DRM_IOCTL_TEGRA_CHANNEL_UNMAP DRM_IOWR(DRM_COMMAND_BASE + 0x13, struct drm_tegra_channel_unmap) 1050*7688df22SAndroid Build Coastguard Worker #define DRM_IOCTL_TEGRA_CHANNEL_SUBMIT DRM_IOWR(DRM_COMMAND_BASE + 0x14, struct drm_tegra_channel_submit) 1051*7688df22SAndroid Build Coastguard Worker 1052*7688df22SAndroid Build Coastguard Worker #define DRM_IOCTL_TEGRA_SYNCPOINT_ALLOCATE DRM_IOWR(DRM_COMMAND_BASE + 0x20, struct drm_tegra_syncpoint_allocate) 1053*7688df22SAndroid Build Coastguard Worker #define DRM_IOCTL_TEGRA_SYNCPOINT_FREE DRM_IOWR(DRM_COMMAND_BASE + 0x21, struct drm_tegra_syncpoint_free) 1054*7688df22SAndroid Build Coastguard Worker #define DRM_IOCTL_TEGRA_SYNCPOINT_WAIT DRM_IOWR(DRM_COMMAND_BASE + 0x22, struct drm_tegra_syncpoint_wait) 1055*7688df22SAndroid Build Coastguard Worker 1056*7688df22SAndroid Build Coastguard Worker #if defined(__cplusplus) 1057*7688df22SAndroid Build Coastguard Worker } 1058*7688df22SAndroid Build Coastguard Worker #endif 1059*7688df22SAndroid Build Coastguard Worker 1060*7688df22SAndroid Build Coastguard Worker #endif 1061