xref: /aosp_15_r20/external/libdrm/include/drm/tegra_drm.h (revision 7688df22e49036ff52a766b7101da3a49edadb8c)
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