1/*
2 * This header was generated from the Linux kernel headers by update_headers.py,
3 * to provide necessary information from kernel to userspace, such as constants,
4 * structures, and macros, and thus, contains no copyrightable information.
5 */
6#ifndef _UAPI_TEGRA_DRM_H_
7#define _UAPI_TEGRA_DRM_H_
8#include "drm.h"
9#if defined(__cplusplus)
10extern "C" {
11#endif
12#define DRM_TEGRA_GEM_CREATE_TILED     (1 << 0)
13#define DRM_TEGRA_GEM_CREATE_BOTTOM_UP (1 << 1)
14struct drm_tegra_gem_create {
15
16	__u64 size;
17
18	__u32 flags;
19
20	__u32 handle;
21};
22struct drm_tegra_gem_mmap {
23
24	__u32 handle;
25
26	__u32 pad;
27
28	__u64 offset;
29};
30struct drm_tegra_syncpt_read {
31
32	__u32 id;
33
34	__u32 value;
35};
36struct drm_tegra_syncpt_incr {
37
38	__u32 id;
39
40	__u32 pad;
41};
42struct drm_tegra_syncpt_wait {
43
44	__u32 id;
45
46	__u32 thresh;
47
48	__u32 timeout;
49
50	__u32 value;
51};
52#define DRM_TEGRA_NO_TIMEOUT	(0xffffffff)
53struct drm_tegra_open_channel {
54
55	__u32 client;
56
57	__u32 pad;
58
59	__u64 context;
60};
61struct drm_tegra_close_channel {
62
63	__u64 context;
64};
65struct drm_tegra_get_syncpt {
66
67	__u64 context;
68
69	__u32 index;
70
71	__u32 id;
72};
73struct drm_tegra_get_syncpt_base {
74
75	__u64 context;
76
77	__u32 syncpt;
78
79	__u32 id;
80};
81struct drm_tegra_syncpt {
82
83	__u32 id;
84
85	__u32 incrs;
86};
87struct drm_tegra_cmdbuf {
88
89	__u32 handle;
90
91	__u32 offset;
92
93	__u32 words;
94
95	__u32 pad;
96};
97struct drm_tegra_reloc {
98	struct {
99
100		__u32 handle;
101
102		__u32 offset;
103	} cmdbuf;
104	struct {
105
106		__u32 handle;
107
108		__u32 offset;
109	} target;
110
111	__u32 shift;
112
113	__u32 pad;
114};
115struct drm_tegra_waitchk {
116
117	__u32 handle;
118
119	__u32 offset;
120
121	__u32 syncpt;
122
123	__u32 thresh;
124};
125struct drm_tegra_submit {
126
127	__u64 context;
128
129	__u32 num_syncpts;
130
131	__u32 num_cmdbufs;
132
133	__u32 num_relocs;
134
135	__u32 num_waitchks;
136
137	__u32 waitchk_mask;
138
139	__u32 timeout;
140
141	__u64 syncpts;
142
143	__u64 cmdbufs;
144
145	__u64 relocs;
146
147	__u64 waitchks;
148
149	__u32 fence;
150
151	__u32 reserved[5];
152};
153#define DRM_TEGRA_GEM_TILING_MODE_PITCH 0
154#define DRM_TEGRA_GEM_TILING_MODE_TILED 1
155#define DRM_TEGRA_GEM_TILING_MODE_BLOCK 2
156struct drm_tegra_gem_set_tiling {
157
158	__u32 handle;
159
160	__u32 mode;
161
162	__u32 value;
163
164	__u32 pad;
165};
166struct drm_tegra_gem_get_tiling {
167
168	__u32 handle;
169
170	__u32 mode;
171
172	__u32 value;
173
174	__u32 pad;
175};
176#define DRM_TEGRA_GEM_BOTTOM_UP		(1 << 0)
177#define DRM_TEGRA_GEM_FLAGS		(DRM_TEGRA_GEM_BOTTOM_UP)
178struct drm_tegra_gem_set_flags {
179
180	__u32 handle;
181
182	__u32 flags;
183};
184struct drm_tegra_gem_get_flags {
185
186	__u32 handle;
187
188	__u32 flags;
189};
190#define DRM_TEGRA_GEM_CREATE		0x00
191#define DRM_TEGRA_GEM_MMAP		0x01
192#define DRM_TEGRA_SYNCPT_READ		0x02
193#define DRM_TEGRA_SYNCPT_INCR		0x03
194#define DRM_TEGRA_SYNCPT_WAIT		0x04
195#define DRM_TEGRA_OPEN_CHANNEL		0x05
196#define DRM_TEGRA_CLOSE_CHANNEL		0x06
197#define DRM_TEGRA_GET_SYNCPT		0x07
198#define DRM_TEGRA_SUBMIT		0x08
199#define DRM_TEGRA_GET_SYNCPT_BASE	0x09
200#define DRM_TEGRA_GEM_SET_TILING	0x0a
201#define DRM_TEGRA_GEM_GET_TILING	0x0b
202#define DRM_TEGRA_GEM_SET_FLAGS		0x0c
203#define DRM_TEGRA_GEM_GET_FLAGS		0x0d
204#define DRM_IOCTL_TEGRA_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_CREATE, struct drm_tegra_gem_create)
205#define DRM_IOCTL_TEGRA_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_MMAP, struct drm_tegra_gem_mmap)
206#define DRM_IOCTL_TEGRA_SYNCPT_READ DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SYNCPT_READ, struct drm_tegra_syncpt_read)
207#define DRM_IOCTL_TEGRA_SYNCPT_INCR DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SYNCPT_INCR, struct drm_tegra_syncpt_incr)
208#define DRM_IOCTL_TEGRA_SYNCPT_WAIT DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SYNCPT_WAIT, struct drm_tegra_syncpt_wait)
209#define DRM_IOCTL_TEGRA_OPEN_CHANNEL DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_OPEN_CHANNEL, struct drm_tegra_open_channel)
210#define DRM_IOCTL_TEGRA_CLOSE_CHANNEL DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_CLOSE_CHANNEL, struct drm_tegra_close_channel)
211#define DRM_IOCTL_TEGRA_GET_SYNCPT DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GET_SYNCPT, struct drm_tegra_get_syncpt)
212#define DRM_IOCTL_TEGRA_SUBMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SUBMIT, struct drm_tegra_submit)
213#define DRM_IOCTL_TEGRA_GET_SYNCPT_BASE DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GET_SYNCPT_BASE, struct drm_tegra_get_syncpt_base)
214#define DRM_IOCTL_TEGRA_GEM_SET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_SET_TILING, struct drm_tegra_gem_set_tiling)
215#define DRM_IOCTL_TEGRA_GEM_GET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_GET_TILING, struct drm_tegra_gem_get_tiling)
216#define DRM_IOCTL_TEGRA_GEM_SET_FLAGS DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_SET_FLAGS, struct drm_tegra_gem_set_flags)
217#define DRM_IOCTL_TEGRA_GEM_GET_FLAGS DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_GET_FLAGS, struct drm_tegra_gem_get_flags)
218#if defined(__cplusplus)
219}
220#endif
221#endif
222