18c2ecf20Sopenharmony_ci/* 28c2ecf20Sopenharmony_ci * Copyright (c) 2012-2013, NVIDIA CORPORATION. All rights reserved. 38c2ecf20Sopenharmony_ci * 48c2ecf20Sopenharmony_ci * Permission is hereby granted, free of charge, to any person obtaining a 58c2ecf20Sopenharmony_ci * copy of this software and associated documentation files (the "Software"), 68c2ecf20Sopenharmony_ci * to deal in the Software without restriction, including without limitation 78c2ecf20Sopenharmony_ci * the rights to use, copy, modify, merge, publish, distribute, sublicense, 88c2ecf20Sopenharmony_ci * and/or sell copies of the Software, and to permit persons to whom the 98c2ecf20Sopenharmony_ci * Software is furnished to do so, subject to the following conditions: 108c2ecf20Sopenharmony_ci * 118c2ecf20Sopenharmony_ci * The above copyright notice and this permission notice shall be included in 128c2ecf20Sopenharmony_ci * all copies or substantial portions of the Software. 138c2ecf20Sopenharmony_ci * 148c2ecf20Sopenharmony_ci * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 158c2ecf20Sopenharmony_ci * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 168c2ecf20Sopenharmony_ci * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 178c2ecf20Sopenharmony_ci * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR 188c2ecf20Sopenharmony_ci * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 198c2ecf20Sopenharmony_ci * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 208c2ecf20Sopenharmony_ci * OTHER DEALINGS IN THE SOFTWARE. 218c2ecf20Sopenharmony_ci */ 228c2ecf20Sopenharmony_ci 238c2ecf20Sopenharmony_ci#ifndef _UAPI_TEGRA_DRM_H_ 248c2ecf20Sopenharmony_ci#define _UAPI_TEGRA_DRM_H_ 258c2ecf20Sopenharmony_ci 268c2ecf20Sopenharmony_ci#include "drm.h" 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_ci#if defined(__cplusplus) 298c2ecf20Sopenharmony_ciextern "C" { 308c2ecf20Sopenharmony_ci#endif 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_ci#define DRM_TEGRA_GEM_CREATE_TILED (1 << 0) 338c2ecf20Sopenharmony_ci#define DRM_TEGRA_GEM_CREATE_BOTTOM_UP (1 << 1) 348c2ecf20Sopenharmony_ci 358c2ecf20Sopenharmony_ci/** 368c2ecf20Sopenharmony_ci * struct drm_tegra_gem_create - parameters for the GEM object creation IOCTL 378c2ecf20Sopenharmony_ci */ 388c2ecf20Sopenharmony_cistruct drm_tegra_gem_create { 398c2ecf20Sopenharmony_ci /** 408c2ecf20Sopenharmony_ci * @size: 418c2ecf20Sopenharmony_ci * 428c2ecf20Sopenharmony_ci * The size, in bytes, of the buffer object to be created. 438c2ecf20Sopenharmony_ci */ 448c2ecf20Sopenharmony_ci __u64 size; 458c2ecf20Sopenharmony_ci 468c2ecf20Sopenharmony_ci /** 478c2ecf20Sopenharmony_ci * @flags: 488c2ecf20Sopenharmony_ci * 498c2ecf20Sopenharmony_ci * A bitmask of flags that influence the creation of GEM objects: 508c2ecf20Sopenharmony_ci * 518c2ecf20Sopenharmony_ci * DRM_TEGRA_GEM_CREATE_TILED 528c2ecf20Sopenharmony_ci * Use the 16x16 tiling format for this buffer. 538c2ecf20Sopenharmony_ci * 548c2ecf20Sopenharmony_ci * DRM_TEGRA_GEM_CREATE_BOTTOM_UP 558c2ecf20Sopenharmony_ci * The buffer has a bottom-up layout. 568c2ecf20Sopenharmony_ci */ 578c2ecf20Sopenharmony_ci __u32 flags; 588c2ecf20Sopenharmony_ci 598c2ecf20Sopenharmony_ci /** 608c2ecf20Sopenharmony_ci * @handle: 618c2ecf20Sopenharmony_ci * 628c2ecf20Sopenharmony_ci * The handle of the created GEM object. Set by the kernel upon 638c2ecf20Sopenharmony_ci * successful completion of the IOCTL. 648c2ecf20Sopenharmony_ci */ 658c2ecf20Sopenharmony_ci __u32 handle; 668c2ecf20Sopenharmony_ci}; 678c2ecf20Sopenharmony_ci 688c2ecf20Sopenharmony_ci/** 698c2ecf20Sopenharmony_ci * struct drm_tegra_gem_mmap - parameters for the GEM mmap IOCTL 708c2ecf20Sopenharmony_ci */ 718c2ecf20Sopenharmony_cistruct drm_tegra_gem_mmap { 728c2ecf20Sopenharmony_ci /** 738c2ecf20Sopenharmony_ci * @handle: 748c2ecf20Sopenharmony_ci * 758c2ecf20Sopenharmony_ci * Handle of the GEM object to obtain an mmap offset for. 768c2ecf20Sopenharmony_ci */ 778c2ecf20Sopenharmony_ci __u32 handle; 788c2ecf20Sopenharmony_ci 798c2ecf20Sopenharmony_ci /** 808c2ecf20Sopenharmony_ci * @pad: 818c2ecf20Sopenharmony_ci * 828c2ecf20Sopenharmony_ci * Structure padding that may be used in the future. Must be 0. 838c2ecf20Sopenharmony_ci */ 848c2ecf20Sopenharmony_ci __u32 pad; 858c2ecf20Sopenharmony_ci 868c2ecf20Sopenharmony_ci /** 878c2ecf20Sopenharmony_ci * @offset: 888c2ecf20Sopenharmony_ci * 898c2ecf20Sopenharmony_ci * The mmap offset for the given GEM object. Set by the kernel upon 908c2ecf20Sopenharmony_ci * successful completion of the IOCTL. 918c2ecf20Sopenharmony_ci */ 928c2ecf20Sopenharmony_ci __u64 offset; 938c2ecf20Sopenharmony_ci}; 948c2ecf20Sopenharmony_ci 958c2ecf20Sopenharmony_ci/** 968c2ecf20Sopenharmony_ci * struct drm_tegra_syncpt_read - parameters for the read syncpoint IOCTL 978c2ecf20Sopenharmony_ci */ 988c2ecf20Sopenharmony_cistruct drm_tegra_syncpt_read { 998c2ecf20Sopenharmony_ci /** 1008c2ecf20Sopenharmony_ci * @id: 1018c2ecf20Sopenharmony_ci * 1028c2ecf20Sopenharmony_ci * ID of the syncpoint to read the current value from. 1038c2ecf20Sopenharmony_ci */ 1048c2ecf20Sopenharmony_ci __u32 id; 1058c2ecf20Sopenharmony_ci 1068c2ecf20Sopenharmony_ci /** 1078c2ecf20Sopenharmony_ci * @value: 1088c2ecf20Sopenharmony_ci * 1098c2ecf20Sopenharmony_ci * The current syncpoint value. Set by the kernel upon successful 1108c2ecf20Sopenharmony_ci * completion of the IOCTL. 1118c2ecf20Sopenharmony_ci */ 1128c2ecf20Sopenharmony_ci __u32 value; 1138c2ecf20Sopenharmony_ci}; 1148c2ecf20Sopenharmony_ci 1158c2ecf20Sopenharmony_ci/** 1168c2ecf20Sopenharmony_ci * struct drm_tegra_syncpt_incr - parameters for the increment syncpoint IOCTL 1178c2ecf20Sopenharmony_ci */ 1188c2ecf20Sopenharmony_cistruct drm_tegra_syncpt_incr { 1198c2ecf20Sopenharmony_ci /** 1208c2ecf20Sopenharmony_ci * @id: 1218c2ecf20Sopenharmony_ci * 1228c2ecf20Sopenharmony_ci * ID of the syncpoint to increment. 1238c2ecf20Sopenharmony_ci */ 1248c2ecf20Sopenharmony_ci __u32 id; 1258c2ecf20Sopenharmony_ci 1268c2ecf20Sopenharmony_ci /** 1278c2ecf20Sopenharmony_ci * @pad: 1288c2ecf20Sopenharmony_ci * 1298c2ecf20Sopenharmony_ci * Structure padding that may be used in the future. Must be 0. 1308c2ecf20Sopenharmony_ci */ 1318c2ecf20Sopenharmony_ci __u32 pad; 1328c2ecf20Sopenharmony_ci}; 1338c2ecf20Sopenharmony_ci 1348c2ecf20Sopenharmony_ci/** 1358c2ecf20Sopenharmony_ci * struct drm_tegra_syncpt_wait - parameters for the wait syncpoint IOCTL 1368c2ecf20Sopenharmony_ci */ 1378c2ecf20Sopenharmony_cistruct drm_tegra_syncpt_wait { 1388c2ecf20Sopenharmony_ci /** 1398c2ecf20Sopenharmony_ci * @id: 1408c2ecf20Sopenharmony_ci * 1418c2ecf20Sopenharmony_ci * ID of the syncpoint to wait on. 1428c2ecf20Sopenharmony_ci */ 1438c2ecf20Sopenharmony_ci __u32 id; 1448c2ecf20Sopenharmony_ci 1458c2ecf20Sopenharmony_ci /** 1468c2ecf20Sopenharmony_ci * @thresh: 1478c2ecf20Sopenharmony_ci * 1488c2ecf20Sopenharmony_ci * Threshold value for which to wait. 1498c2ecf20Sopenharmony_ci */ 1508c2ecf20Sopenharmony_ci __u32 thresh; 1518c2ecf20Sopenharmony_ci 1528c2ecf20Sopenharmony_ci /** 1538c2ecf20Sopenharmony_ci * @timeout: 1548c2ecf20Sopenharmony_ci * 1558c2ecf20Sopenharmony_ci * Timeout, in milliseconds, to wait. 1568c2ecf20Sopenharmony_ci */ 1578c2ecf20Sopenharmony_ci __u32 timeout; 1588c2ecf20Sopenharmony_ci 1598c2ecf20Sopenharmony_ci /** 1608c2ecf20Sopenharmony_ci * @value: 1618c2ecf20Sopenharmony_ci * 1628c2ecf20Sopenharmony_ci * The new syncpoint value after the wait. Set by the kernel upon 1638c2ecf20Sopenharmony_ci * successful completion of the IOCTL. 1648c2ecf20Sopenharmony_ci */ 1658c2ecf20Sopenharmony_ci __u32 value; 1668c2ecf20Sopenharmony_ci}; 1678c2ecf20Sopenharmony_ci 1688c2ecf20Sopenharmony_ci#define DRM_TEGRA_NO_TIMEOUT (0xffffffff) 1698c2ecf20Sopenharmony_ci 1708c2ecf20Sopenharmony_ci/** 1718c2ecf20Sopenharmony_ci * struct drm_tegra_open_channel - parameters for the open channel IOCTL 1728c2ecf20Sopenharmony_ci */ 1738c2ecf20Sopenharmony_cistruct drm_tegra_open_channel { 1748c2ecf20Sopenharmony_ci /** 1758c2ecf20Sopenharmony_ci * @client: 1768c2ecf20Sopenharmony_ci * 1778c2ecf20Sopenharmony_ci * The client ID for this channel. 1788c2ecf20Sopenharmony_ci */ 1798c2ecf20Sopenharmony_ci __u32 client; 1808c2ecf20Sopenharmony_ci 1818c2ecf20Sopenharmony_ci /** 1828c2ecf20Sopenharmony_ci * @pad: 1838c2ecf20Sopenharmony_ci * 1848c2ecf20Sopenharmony_ci * Structure padding that may be used in the future. Must be 0. 1858c2ecf20Sopenharmony_ci */ 1868c2ecf20Sopenharmony_ci __u32 pad; 1878c2ecf20Sopenharmony_ci 1888c2ecf20Sopenharmony_ci /** 1898c2ecf20Sopenharmony_ci * @context: 1908c2ecf20Sopenharmony_ci * 1918c2ecf20Sopenharmony_ci * The application context of this channel. Set by the kernel upon 1928c2ecf20Sopenharmony_ci * successful completion of the IOCTL. This context needs to be passed 1938c2ecf20Sopenharmony_ci * to the DRM_TEGRA_CHANNEL_CLOSE or the DRM_TEGRA_SUBMIT IOCTLs. 1948c2ecf20Sopenharmony_ci */ 1958c2ecf20Sopenharmony_ci __u64 context; 1968c2ecf20Sopenharmony_ci}; 1978c2ecf20Sopenharmony_ci 1988c2ecf20Sopenharmony_ci/** 1998c2ecf20Sopenharmony_ci * struct drm_tegra_close_channel - parameters for the close channel IOCTL 2008c2ecf20Sopenharmony_ci */ 2018c2ecf20Sopenharmony_cistruct drm_tegra_close_channel { 2028c2ecf20Sopenharmony_ci /** 2038c2ecf20Sopenharmony_ci * @context: 2048c2ecf20Sopenharmony_ci * 2058c2ecf20Sopenharmony_ci * The application context of this channel. This is obtained from the 2068c2ecf20Sopenharmony_ci * DRM_TEGRA_OPEN_CHANNEL IOCTL. 2078c2ecf20Sopenharmony_ci */ 2088c2ecf20Sopenharmony_ci __u64 context; 2098c2ecf20Sopenharmony_ci}; 2108c2ecf20Sopenharmony_ci 2118c2ecf20Sopenharmony_ci/** 2128c2ecf20Sopenharmony_ci * struct drm_tegra_get_syncpt - parameters for the get syncpoint IOCTL 2138c2ecf20Sopenharmony_ci */ 2148c2ecf20Sopenharmony_cistruct drm_tegra_get_syncpt { 2158c2ecf20Sopenharmony_ci /** 2168c2ecf20Sopenharmony_ci * @context: 2178c2ecf20Sopenharmony_ci * 2188c2ecf20Sopenharmony_ci * The application context identifying the channel for which to obtain 2198c2ecf20Sopenharmony_ci * the syncpoint ID. 2208c2ecf20Sopenharmony_ci */ 2218c2ecf20Sopenharmony_ci __u64 context; 2228c2ecf20Sopenharmony_ci 2238c2ecf20Sopenharmony_ci /** 2248c2ecf20Sopenharmony_ci * @index: 2258c2ecf20Sopenharmony_ci * 2268c2ecf20Sopenharmony_ci * Index of the client syncpoint for which to obtain the ID. 2278c2ecf20Sopenharmony_ci */ 2288c2ecf20Sopenharmony_ci __u32 index; 2298c2ecf20Sopenharmony_ci 2308c2ecf20Sopenharmony_ci /** 2318c2ecf20Sopenharmony_ci * @id: 2328c2ecf20Sopenharmony_ci * 2338c2ecf20Sopenharmony_ci * The ID of the given syncpoint. Set by the kernel upon successful 2348c2ecf20Sopenharmony_ci * completion of the IOCTL. 2358c2ecf20Sopenharmony_ci */ 2368c2ecf20Sopenharmony_ci __u32 id; 2378c2ecf20Sopenharmony_ci}; 2388c2ecf20Sopenharmony_ci 2398c2ecf20Sopenharmony_ci/** 2408c2ecf20Sopenharmony_ci * struct drm_tegra_get_syncpt_base - parameters for the get wait base IOCTL 2418c2ecf20Sopenharmony_ci */ 2428c2ecf20Sopenharmony_cistruct drm_tegra_get_syncpt_base { 2438c2ecf20Sopenharmony_ci /** 2448c2ecf20Sopenharmony_ci * @context: 2458c2ecf20Sopenharmony_ci * 2468c2ecf20Sopenharmony_ci * The application context identifying for which channel to obtain the 2478c2ecf20Sopenharmony_ci * wait base. 2488c2ecf20Sopenharmony_ci */ 2498c2ecf20Sopenharmony_ci __u64 context; 2508c2ecf20Sopenharmony_ci 2518c2ecf20Sopenharmony_ci /** 2528c2ecf20Sopenharmony_ci * @syncpt: 2538c2ecf20Sopenharmony_ci * 2548c2ecf20Sopenharmony_ci * ID of the syncpoint for which to obtain the wait base. 2558c2ecf20Sopenharmony_ci */ 2568c2ecf20Sopenharmony_ci __u32 syncpt; 2578c2ecf20Sopenharmony_ci 2588c2ecf20Sopenharmony_ci /** 2598c2ecf20Sopenharmony_ci * @id: 2608c2ecf20Sopenharmony_ci * 2618c2ecf20Sopenharmony_ci * The ID of the wait base corresponding to the client syncpoint. Set 2628c2ecf20Sopenharmony_ci * by the kernel upon successful completion of the IOCTL. 2638c2ecf20Sopenharmony_ci */ 2648c2ecf20Sopenharmony_ci __u32 id; 2658c2ecf20Sopenharmony_ci}; 2668c2ecf20Sopenharmony_ci 2678c2ecf20Sopenharmony_ci/** 2688c2ecf20Sopenharmony_ci * struct drm_tegra_syncpt - syncpoint increment operation 2698c2ecf20Sopenharmony_ci */ 2708c2ecf20Sopenharmony_cistruct drm_tegra_syncpt { 2718c2ecf20Sopenharmony_ci /** 2728c2ecf20Sopenharmony_ci * @id: 2738c2ecf20Sopenharmony_ci * 2748c2ecf20Sopenharmony_ci * ID of the syncpoint to operate on. 2758c2ecf20Sopenharmony_ci */ 2768c2ecf20Sopenharmony_ci __u32 id; 2778c2ecf20Sopenharmony_ci 2788c2ecf20Sopenharmony_ci /** 2798c2ecf20Sopenharmony_ci * @incrs: 2808c2ecf20Sopenharmony_ci * 2818c2ecf20Sopenharmony_ci * Number of increments to perform for the syncpoint. 2828c2ecf20Sopenharmony_ci */ 2838c2ecf20Sopenharmony_ci __u32 incrs; 2848c2ecf20Sopenharmony_ci}; 2858c2ecf20Sopenharmony_ci 2868c2ecf20Sopenharmony_ci/** 2878c2ecf20Sopenharmony_ci * struct drm_tegra_cmdbuf - structure describing a command buffer 2888c2ecf20Sopenharmony_ci */ 2898c2ecf20Sopenharmony_cistruct drm_tegra_cmdbuf { 2908c2ecf20Sopenharmony_ci /** 2918c2ecf20Sopenharmony_ci * @handle: 2928c2ecf20Sopenharmony_ci * 2938c2ecf20Sopenharmony_ci * Handle to a GEM object containing the command buffer. 2948c2ecf20Sopenharmony_ci */ 2958c2ecf20Sopenharmony_ci __u32 handle; 2968c2ecf20Sopenharmony_ci 2978c2ecf20Sopenharmony_ci /** 2988c2ecf20Sopenharmony_ci * @offset: 2998c2ecf20Sopenharmony_ci * 3008c2ecf20Sopenharmony_ci * Offset, in bytes, into the GEM object identified by @handle at 3018c2ecf20Sopenharmony_ci * which the command buffer starts. 3028c2ecf20Sopenharmony_ci */ 3038c2ecf20Sopenharmony_ci __u32 offset; 3048c2ecf20Sopenharmony_ci 3058c2ecf20Sopenharmony_ci /** 3068c2ecf20Sopenharmony_ci * @words: 3078c2ecf20Sopenharmony_ci * 3088c2ecf20Sopenharmony_ci * Number of 32-bit words in this command buffer. 3098c2ecf20Sopenharmony_ci */ 3108c2ecf20Sopenharmony_ci __u32 words; 3118c2ecf20Sopenharmony_ci 3128c2ecf20Sopenharmony_ci /** 3138c2ecf20Sopenharmony_ci * @pad: 3148c2ecf20Sopenharmony_ci * 3158c2ecf20Sopenharmony_ci * Structure padding that may be used in the future. Must be 0. 3168c2ecf20Sopenharmony_ci */ 3178c2ecf20Sopenharmony_ci __u32 pad; 3188c2ecf20Sopenharmony_ci}; 3198c2ecf20Sopenharmony_ci 3208c2ecf20Sopenharmony_ci/** 3218c2ecf20Sopenharmony_ci * struct drm_tegra_reloc - GEM object relocation structure 3228c2ecf20Sopenharmony_ci */ 3238c2ecf20Sopenharmony_cistruct drm_tegra_reloc { 3248c2ecf20Sopenharmony_ci struct { 3258c2ecf20Sopenharmony_ci /** 3268c2ecf20Sopenharmony_ci * @cmdbuf.handle: 3278c2ecf20Sopenharmony_ci * 3288c2ecf20Sopenharmony_ci * Handle to the GEM object containing the command buffer for 3298c2ecf20Sopenharmony_ci * which to perform this GEM object relocation. 3308c2ecf20Sopenharmony_ci */ 3318c2ecf20Sopenharmony_ci __u32 handle; 3328c2ecf20Sopenharmony_ci 3338c2ecf20Sopenharmony_ci /** 3348c2ecf20Sopenharmony_ci * @cmdbuf.offset: 3358c2ecf20Sopenharmony_ci * 3368c2ecf20Sopenharmony_ci * Offset, in bytes, into the command buffer at which to 3378c2ecf20Sopenharmony_ci * insert the relocated address. 3388c2ecf20Sopenharmony_ci */ 3398c2ecf20Sopenharmony_ci __u32 offset; 3408c2ecf20Sopenharmony_ci } cmdbuf; 3418c2ecf20Sopenharmony_ci struct { 3428c2ecf20Sopenharmony_ci /** 3438c2ecf20Sopenharmony_ci * @target.handle: 3448c2ecf20Sopenharmony_ci * 3458c2ecf20Sopenharmony_ci * Handle to the GEM object to be relocated. 3468c2ecf20Sopenharmony_ci */ 3478c2ecf20Sopenharmony_ci __u32 handle; 3488c2ecf20Sopenharmony_ci 3498c2ecf20Sopenharmony_ci /** 3508c2ecf20Sopenharmony_ci * @target.offset: 3518c2ecf20Sopenharmony_ci * 3528c2ecf20Sopenharmony_ci * Offset, in bytes, into the target GEM object at which the 3538c2ecf20Sopenharmony_ci * relocated data starts. 3548c2ecf20Sopenharmony_ci */ 3558c2ecf20Sopenharmony_ci __u32 offset; 3568c2ecf20Sopenharmony_ci } target; 3578c2ecf20Sopenharmony_ci 3588c2ecf20Sopenharmony_ci /** 3598c2ecf20Sopenharmony_ci * @shift: 3608c2ecf20Sopenharmony_ci * 3618c2ecf20Sopenharmony_ci * The number of bits by which to shift relocated addresses. 3628c2ecf20Sopenharmony_ci */ 3638c2ecf20Sopenharmony_ci __u32 shift; 3648c2ecf20Sopenharmony_ci 3658c2ecf20Sopenharmony_ci /** 3668c2ecf20Sopenharmony_ci * @pad: 3678c2ecf20Sopenharmony_ci * 3688c2ecf20Sopenharmony_ci * Structure padding that may be used in the future. Must be 0. 3698c2ecf20Sopenharmony_ci */ 3708c2ecf20Sopenharmony_ci __u32 pad; 3718c2ecf20Sopenharmony_ci}; 3728c2ecf20Sopenharmony_ci 3738c2ecf20Sopenharmony_ci/** 3748c2ecf20Sopenharmony_ci * struct drm_tegra_waitchk - wait check structure 3758c2ecf20Sopenharmony_ci */ 3768c2ecf20Sopenharmony_cistruct drm_tegra_waitchk { 3778c2ecf20Sopenharmony_ci /** 3788c2ecf20Sopenharmony_ci * @handle: 3798c2ecf20Sopenharmony_ci * 3808c2ecf20Sopenharmony_ci * Handle to the GEM object containing a command stream on which to 3818c2ecf20Sopenharmony_ci * perform the wait check. 3828c2ecf20Sopenharmony_ci */ 3838c2ecf20Sopenharmony_ci __u32 handle; 3848c2ecf20Sopenharmony_ci 3858c2ecf20Sopenharmony_ci /** 3868c2ecf20Sopenharmony_ci * @offset: 3878c2ecf20Sopenharmony_ci * 3888c2ecf20Sopenharmony_ci * Offset, in bytes, of the location in the command stream to perform 3898c2ecf20Sopenharmony_ci * the wait check on. 3908c2ecf20Sopenharmony_ci */ 3918c2ecf20Sopenharmony_ci __u32 offset; 3928c2ecf20Sopenharmony_ci 3938c2ecf20Sopenharmony_ci /** 3948c2ecf20Sopenharmony_ci * @syncpt: 3958c2ecf20Sopenharmony_ci * 3968c2ecf20Sopenharmony_ci * ID of the syncpoint to wait check. 3978c2ecf20Sopenharmony_ci */ 3988c2ecf20Sopenharmony_ci __u32 syncpt; 3998c2ecf20Sopenharmony_ci 4008c2ecf20Sopenharmony_ci /** 4018c2ecf20Sopenharmony_ci * @thresh: 4028c2ecf20Sopenharmony_ci * 4038c2ecf20Sopenharmony_ci * Threshold value for which to check. 4048c2ecf20Sopenharmony_ci */ 4058c2ecf20Sopenharmony_ci __u32 thresh; 4068c2ecf20Sopenharmony_ci}; 4078c2ecf20Sopenharmony_ci 4088c2ecf20Sopenharmony_ci/** 4098c2ecf20Sopenharmony_ci * struct drm_tegra_submit - job submission structure 4108c2ecf20Sopenharmony_ci */ 4118c2ecf20Sopenharmony_cistruct drm_tegra_submit { 4128c2ecf20Sopenharmony_ci /** 4138c2ecf20Sopenharmony_ci * @context: 4148c2ecf20Sopenharmony_ci * 4158c2ecf20Sopenharmony_ci * The application context identifying the channel to use for the 4168c2ecf20Sopenharmony_ci * execution of this job. 4178c2ecf20Sopenharmony_ci */ 4188c2ecf20Sopenharmony_ci __u64 context; 4198c2ecf20Sopenharmony_ci 4208c2ecf20Sopenharmony_ci /** 4218c2ecf20Sopenharmony_ci * @num_syncpts: 4228c2ecf20Sopenharmony_ci * 4238c2ecf20Sopenharmony_ci * The number of syncpoints operated on by this job. This defines the 4248c2ecf20Sopenharmony_ci * length of the array pointed to by @syncpts. 4258c2ecf20Sopenharmony_ci */ 4268c2ecf20Sopenharmony_ci __u32 num_syncpts; 4278c2ecf20Sopenharmony_ci 4288c2ecf20Sopenharmony_ci /** 4298c2ecf20Sopenharmony_ci * @num_cmdbufs: 4308c2ecf20Sopenharmony_ci * 4318c2ecf20Sopenharmony_ci * The number of command buffers to execute as part of this job. This 4328c2ecf20Sopenharmony_ci * defines the length of the array pointed to by @cmdbufs. 4338c2ecf20Sopenharmony_ci */ 4348c2ecf20Sopenharmony_ci __u32 num_cmdbufs; 4358c2ecf20Sopenharmony_ci 4368c2ecf20Sopenharmony_ci /** 4378c2ecf20Sopenharmony_ci * @num_relocs: 4388c2ecf20Sopenharmony_ci * 4398c2ecf20Sopenharmony_ci * The number of relocations to perform before executing this job. 4408c2ecf20Sopenharmony_ci * This defines the length of the array pointed to by @relocs. 4418c2ecf20Sopenharmony_ci */ 4428c2ecf20Sopenharmony_ci __u32 num_relocs; 4438c2ecf20Sopenharmony_ci 4448c2ecf20Sopenharmony_ci /** 4458c2ecf20Sopenharmony_ci * @num_waitchks: 4468c2ecf20Sopenharmony_ci * 4478c2ecf20Sopenharmony_ci * The number of wait checks to perform as part of this job. This 4488c2ecf20Sopenharmony_ci * defines the length of the array pointed to by @waitchks. 4498c2ecf20Sopenharmony_ci */ 4508c2ecf20Sopenharmony_ci __u32 num_waitchks; 4518c2ecf20Sopenharmony_ci 4528c2ecf20Sopenharmony_ci /** 4538c2ecf20Sopenharmony_ci * @waitchk_mask: 4548c2ecf20Sopenharmony_ci * 4558c2ecf20Sopenharmony_ci * Bitmask of valid wait checks. 4568c2ecf20Sopenharmony_ci */ 4578c2ecf20Sopenharmony_ci __u32 waitchk_mask; 4588c2ecf20Sopenharmony_ci 4598c2ecf20Sopenharmony_ci /** 4608c2ecf20Sopenharmony_ci * @timeout: 4618c2ecf20Sopenharmony_ci * 4628c2ecf20Sopenharmony_ci * Timeout, in milliseconds, before this job is cancelled. 4638c2ecf20Sopenharmony_ci */ 4648c2ecf20Sopenharmony_ci __u32 timeout; 4658c2ecf20Sopenharmony_ci 4668c2ecf20Sopenharmony_ci /** 4678c2ecf20Sopenharmony_ci * @syncpts: 4688c2ecf20Sopenharmony_ci * 4698c2ecf20Sopenharmony_ci * A pointer to an array of &struct drm_tegra_syncpt structures that 4708c2ecf20Sopenharmony_ci * specify the syncpoint operations performed as part of this job. 4718c2ecf20Sopenharmony_ci * The number of elements in the array must be equal to the value 4728c2ecf20Sopenharmony_ci * given by @num_syncpts. 4738c2ecf20Sopenharmony_ci */ 4748c2ecf20Sopenharmony_ci __u64 syncpts; 4758c2ecf20Sopenharmony_ci 4768c2ecf20Sopenharmony_ci /** 4778c2ecf20Sopenharmony_ci * @cmdbufs: 4788c2ecf20Sopenharmony_ci * 4798c2ecf20Sopenharmony_ci * A pointer to an array of &struct drm_tegra_cmdbuf structures that 4808c2ecf20Sopenharmony_ci * define the command buffers to execute as part of this job. The 4818c2ecf20Sopenharmony_ci * number of elements in the array must be equal to the value given 4828c2ecf20Sopenharmony_ci * by @num_syncpts. 4838c2ecf20Sopenharmony_ci */ 4848c2ecf20Sopenharmony_ci __u64 cmdbufs; 4858c2ecf20Sopenharmony_ci 4868c2ecf20Sopenharmony_ci /** 4878c2ecf20Sopenharmony_ci * @relocs: 4888c2ecf20Sopenharmony_ci * 4898c2ecf20Sopenharmony_ci * A pointer to an array of &struct drm_tegra_reloc structures that 4908c2ecf20Sopenharmony_ci * specify the relocations that need to be performed before executing 4918c2ecf20Sopenharmony_ci * this job. The number of elements in the array must be equal to the 4928c2ecf20Sopenharmony_ci * value given by @num_relocs. 4938c2ecf20Sopenharmony_ci */ 4948c2ecf20Sopenharmony_ci __u64 relocs; 4958c2ecf20Sopenharmony_ci 4968c2ecf20Sopenharmony_ci /** 4978c2ecf20Sopenharmony_ci * @waitchks: 4988c2ecf20Sopenharmony_ci * 4998c2ecf20Sopenharmony_ci * A pointer to an array of &struct drm_tegra_waitchk structures that 5008c2ecf20Sopenharmony_ci * specify the wait checks to be performed while executing this job. 5018c2ecf20Sopenharmony_ci * The number of elements in the array must be equal to the value 5028c2ecf20Sopenharmony_ci * given by @num_waitchks. 5038c2ecf20Sopenharmony_ci */ 5048c2ecf20Sopenharmony_ci __u64 waitchks; 5058c2ecf20Sopenharmony_ci 5068c2ecf20Sopenharmony_ci /** 5078c2ecf20Sopenharmony_ci * @fence: 5088c2ecf20Sopenharmony_ci * 5098c2ecf20Sopenharmony_ci * The threshold of the syncpoint associated with this job after it 5108c2ecf20Sopenharmony_ci * has been completed. Set by the kernel upon successful completion of 5118c2ecf20Sopenharmony_ci * the IOCTL. This can be used with the DRM_TEGRA_SYNCPT_WAIT IOCTL to 5128c2ecf20Sopenharmony_ci * wait for this job to be finished. 5138c2ecf20Sopenharmony_ci */ 5148c2ecf20Sopenharmony_ci __u32 fence; 5158c2ecf20Sopenharmony_ci 5168c2ecf20Sopenharmony_ci /** 5178c2ecf20Sopenharmony_ci * @reserved: 5188c2ecf20Sopenharmony_ci * 5198c2ecf20Sopenharmony_ci * This field is reserved for future use. Must be 0. 5208c2ecf20Sopenharmony_ci */ 5218c2ecf20Sopenharmony_ci __u32 reserved[5]; 5228c2ecf20Sopenharmony_ci}; 5238c2ecf20Sopenharmony_ci 5248c2ecf20Sopenharmony_ci#define DRM_TEGRA_GEM_TILING_MODE_PITCH 0 5258c2ecf20Sopenharmony_ci#define DRM_TEGRA_GEM_TILING_MODE_TILED 1 5268c2ecf20Sopenharmony_ci#define DRM_TEGRA_GEM_TILING_MODE_BLOCK 2 5278c2ecf20Sopenharmony_ci 5288c2ecf20Sopenharmony_ci/** 5298c2ecf20Sopenharmony_ci * struct drm_tegra_gem_set_tiling - parameters for the set tiling IOCTL 5308c2ecf20Sopenharmony_ci */ 5318c2ecf20Sopenharmony_cistruct drm_tegra_gem_set_tiling { 5328c2ecf20Sopenharmony_ci /** 5338c2ecf20Sopenharmony_ci * @handle: 5348c2ecf20Sopenharmony_ci * 5358c2ecf20Sopenharmony_ci * Handle to the GEM object for which to set the tiling parameters. 5368c2ecf20Sopenharmony_ci */ 5378c2ecf20Sopenharmony_ci __u32 handle; 5388c2ecf20Sopenharmony_ci 5398c2ecf20Sopenharmony_ci /** 5408c2ecf20Sopenharmony_ci * @mode: 5418c2ecf20Sopenharmony_ci * 5428c2ecf20Sopenharmony_ci * The tiling mode to set. Must be one of: 5438c2ecf20Sopenharmony_ci * 5448c2ecf20Sopenharmony_ci * DRM_TEGRA_GEM_TILING_MODE_PITCH 5458c2ecf20Sopenharmony_ci * pitch linear format 5468c2ecf20Sopenharmony_ci * 5478c2ecf20Sopenharmony_ci * DRM_TEGRA_GEM_TILING_MODE_TILED 5488c2ecf20Sopenharmony_ci * 16x16 tiling format 5498c2ecf20Sopenharmony_ci * 5508c2ecf20Sopenharmony_ci * DRM_TEGRA_GEM_TILING_MODE_BLOCK 5518c2ecf20Sopenharmony_ci * 16Bx2 tiling format 5528c2ecf20Sopenharmony_ci */ 5538c2ecf20Sopenharmony_ci __u32 mode; 5548c2ecf20Sopenharmony_ci 5558c2ecf20Sopenharmony_ci /** 5568c2ecf20Sopenharmony_ci * @value: 5578c2ecf20Sopenharmony_ci * 5588c2ecf20Sopenharmony_ci * The value to set for the tiling mode parameter. 5598c2ecf20Sopenharmony_ci */ 5608c2ecf20Sopenharmony_ci __u32 value; 5618c2ecf20Sopenharmony_ci 5628c2ecf20Sopenharmony_ci /** 5638c2ecf20Sopenharmony_ci * @pad: 5648c2ecf20Sopenharmony_ci * 5658c2ecf20Sopenharmony_ci * Structure padding that may be used in the future. Must be 0. 5668c2ecf20Sopenharmony_ci */ 5678c2ecf20Sopenharmony_ci __u32 pad; 5688c2ecf20Sopenharmony_ci}; 5698c2ecf20Sopenharmony_ci 5708c2ecf20Sopenharmony_ci/** 5718c2ecf20Sopenharmony_ci * struct drm_tegra_gem_get_tiling - parameters for the get tiling IOCTL 5728c2ecf20Sopenharmony_ci */ 5738c2ecf20Sopenharmony_cistruct drm_tegra_gem_get_tiling { 5748c2ecf20Sopenharmony_ci /** 5758c2ecf20Sopenharmony_ci * @handle: 5768c2ecf20Sopenharmony_ci * 5778c2ecf20Sopenharmony_ci * Handle to the GEM object for which to query the tiling parameters. 5788c2ecf20Sopenharmony_ci */ 5798c2ecf20Sopenharmony_ci __u32 handle; 5808c2ecf20Sopenharmony_ci 5818c2ecf20Sopenharmony_ci /** 5828c2ecf20Sopenharmony_ci * @mode: 5838c2ecf20Sopenharmony_ci * 5848c2ecf20Sopenharmony_ci * The tiling mode currently associated with the GEM object. Set by 5858c2ecf20Sopenharmony_ci * the kernel upon successful completion of the IOCTL. 5868c2ecf20Sopenharmony_ci */ 5878c2ecf20Sopenharmony_ci __u32 mode; 5888c2ecf20Sopenharmony_ci 5898c2ecf20Sopenharmony_ci /** 5908c2ecf20Sopenharmony_ci * @value: 5918c2ecf20Sopenharmony_ci * 5928c2ecf20Sopenharmony_ci * The tiling mode parameter currently associated with the GEM object. 5938c2ecf20Sopenharmony_ci * Set by the kernel upon successful completion of the IOCTL. 5948c2ecf20Sopenharmony_ci */ 5958c2ecf20Sopenharmony_ci __u32 value; 5968c2ecf20Sopenharmony_ci 5978c2ecf20Sopenharmony_ci /** 5988c2ecf20Sopenharmony_ci * @pad: 5998c2ecf20Sopenharmony_ci * 6008c2ecf20Sopenharmony_ci * Structure padding that may be used in the future. Must be 0. 6018c2ecf20Sopenharmony_ci */ 6028c2ecf20Sopenharmony_ci __u32 pad; 6038c2ecf20Sopenharmony_ci}; 6048c2ecf20Sopenharmony_ci 6058c2ecf20Sopenharmony_ci#define DRM_TEGRA_GEM_BOTTOM_UP (1 << 0) 6068c2ecf20Sopenharmony_ci#define DRM_TEGRA_GEM_FLAGS (DRM_TEGRA_GEM_BOTTOM_UP) 6078c2ecf20Sopenharmony_ci 6088c2ecf20Sopenharmony_ci/** 6098c2ecf20Sopenharmony_ci * struct drm_tegra_gem_set_flags - parameters for the set flags IOCTL 6108c2ecf20Sopenharmony_ci */ 6118c2ecf20Sopenharmony_cistruct drm_tegra_gem_set_flags { 6128c2ecf20Sopenharmony_ci /** 6138c2ecf20Sopenharmony_ci * @handle: 6148c2ecf20Sopenharmony_ci * 6158c2ecf20Sopenharmony_ci * Handle to the GEM object for which to set the flags. 6168c2ecf20Sopenharmony_ci */ 6178c2ecf20Sopenharmony_ci __u32 handle; 6188c2ecf20Sopenharmony_ci 6198c2ecf20Sopenharmony_ci /** 6208c2ecf20Sopenharmony_ci * @flags: 6218c2ecf20Sopenharmony_ci * 6228c2ecf20Sopenharmony_ci * The flags to set for the GEM object. 6238c2ecf20Sopenharmony_ci */ 6248c2ecf20Sopenharmony_ci __u32 flags; 6258c2ecf20Sopenharmony_ci}; 6268c2ecf20Sopenharmony_ci 6278c2ecf20Sopenharmony_ci/** 6288c2ecf20Sopenharmony_ci * struct drm_tegra_gem_get_flags - parameters for the get flags IOCTL 6298c2ecf20Sopenharmony_ci */ 6308c2ecf20Sopenharmony_cistruct drm_tegra_gem_get_flags { 6318c2ecf20Sopenharmony_ci /** 6328c2ecf20Sopenharmony_ci * @handle: 6338c2ecf20Sopenharmony_ci * 6348c2ecf20Sopenharmony_ci * Handle to the GEM object for which to query the flags. 6358c2ecf20Sopenharmony_ci */ 6368c2ecf20Sopenharmony_ci __u32 handle; 6378c2ecf20Sopenharmony_ci 6388c2ecf20Sopenharmony_ci /** 6398c2ecf20Sopenharmony_ci * @flags: 6408c2ecf20Sopenharmony_ci * 6418c2ecf20Sopenharmony_ci * The flags currently associated with the GEM object. Set by the 6428c2ecf20Sopenharmony_ci * kernel upon successful completion of the IOCTL. 6438c2ecf20Sopenharmony_ci */ 6448c2ecf20Sopenharmony_ci __u32 flags; 6458c2ecf20Sopenharmony_ci}; 6468c2ecf20Sopenharmony_ci 6478c2ecf20Sopenharmony_ci#define DRM_TEGRA_GEM_CREATE 0x00 6488c2ecf20Sopenharmony_ci#define DRM_TEGRA_GEM_MMAP 0x01 6498c2ecf20Sopenharmony_ci#define DRM_TEGRA_SYNCPT_READ 0x02 6508c2ecf20Sopenharmony_ci#define DRM_TEGRA_SYNCPT_INCR 0x03 6518c2ecf20Sopenharmony_ci#define DRM_TEGRA_SYNCPT_WAIT 0x04 6528c2ecf20Sopenharmony_ci#define DRM_TEGRA_OPEN_CHANNEL 0x05 6538c2ecf20Sopenharmony_ci#define DRM_TEGRA_CLOSE_CHANNEL 0x06 6548c2ecf20Sopenharmony_ci#define DRM_TEGRA_GET_SYNCPT 0x07 6558c2ecf20Sopenharmony_ci#define DRM_TEGRA_SUBMIT 0x08 6568c2ecf20Sopenharmony_ci#define DRM_TEGRA_GET_SYNCPT_BASE 0x09 6578c2ecf20Sopenharmony_ci#define DRM_TEGRA_GEM_SET_TILING 0x0a 6588c2ecf20Sopenharmony_ci#define DRM_TEGRA_GEM_GET_TILING 0x0b 6598c2ecf20Sopenharmony_ci#define DRM_TEGRA_GEM_SET_FLAGS 0x0c 6608c2ecf20Sopenharmony_ci#define DRM_TEGRA_GEM_GET_FLAGS 0x0d 6618c2ecf20Sopenharmony_ci 6628c2ecf20Sopenharmony_ci#define DRM_IOCTL_TEGRA_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_CREATE, struct drm_tegra_gem_create) 6638c2ecf20Sopenharmony_ci#define DRM_IOCTL_TEGRA_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_MMAP, struct drm_tegra_gem_mmap) 6648c2ecf20Sopenharmony_ci#define DRM_IOCTL_TEGRA_SYNCPT_READ DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SYNCPT_READ, struct drm_tegra_syncpt_read) 6658c2ecf20Sopenharmony_ci#define DRM_IOCTL_TEGRA_SYNCPT_INCR DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SYNCPT_INCR, struct drm_tegra_syncpt_incr) 6668c2ecf20Sopenharmony_ci#define DRM_IOCTL_TEGRA_SYNCPT_WAIT DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SYNCPT_WAIT, struct drm_tegra_syncpt_wait) 6678c2ecf20Sopenharmony_ci#define DRM_IOCTL_TEGRA_OPEN_CHANNEL DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_OPEN_CHANNEL, struct drm_tegra_open_channel) 6688c2ecf20Sopenharmony_ci#define DRM_IOCTL_TEGRA_CLOSE_CHANNEL DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_CLOSE_CHANNEL, struct drm_tegra_close_channel) 6698c2ecf20Sopenharmony_ci#define DRM_IOCTL_TEGRA_GET_SYNCPT DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GET_SYNCPT, struct drm_tegra_get_syncpt) 6708c2ecf20Sopenharmony_ci#define DRM_IOCTL_TEGRA_SUBMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SUBMIT, struct drm_tegra_submit) 6718c2ecf20Sopenharmony_ci#define DRM_IOCTL_TEGRA_GET_SYNCPT_BASE DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GET_SYNCPT_BASE, struct drm_tegra_get_syncpt_base) 6728c2ecf20Sopenharmony_ci#define DRM_IOCTL_TEGRA_GEM_SET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_SET_TILING, struct drm_tegra_gem_set_tiling) 6738c2ecf20Sopenharmony_ci#define DRM_IOCTL_TEGRA_GEM_GET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_GET_TILING, struct drm_tegra_gem_get_tiling) 6748c2ecf20Sopenharmony_ci#define DRM_IOCTL_TEGRA_GEM_SET_FLAGS DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_SET_FLAGS, struct drm_tegra_gem_set_flags) 6758c2ecf20Sopenharmony_ci#define DRM_IOCTL_TEGRA_GEM_GET_FLAGS DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_GET_FLAGS, struct drm_tegra_gem_get_flags) 6768c2ecf20Sopenharmony_ci 6778c2ecf20Sopenharmony_ci#if defined(__cplusplus) 6788c2ecf20Sopenharmony_ci} 6798c2ecf20Sopenharmony_ci#endif 6808c2ecf20Sopenharmony_ci 6818c2ecf20Sopenharmony_ci#endif 682