Fix common misspellings
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / staging / gma500 / psb_ttm_fence_user.h
1 /**************************************************************************
2 *
3 * Copyright 2006-2008 Tungsten Graphics, Inc., Cedar Park, TX., USA
4 * All Rights Reserved.
5 * Copyright (c) 2009 VMware, Inc., Palo Alto, CA., USA
6 * All Rights Reserved.
7 *
8 * This program is free software; you can redistribute it and/or modify it
9 * under the terms and conditions of the GNU General Public License,
10 * version 2, as published by the Free Software Foundation.
11 *
12 * This program is distributed in the hope it will be useful, but WITHOUT
13 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
15 * more details.
16 *
17 * You should have received a copy of the GNU General Public License along with
18 * this program; if not, write to the Free Software Foundation, Inc.,
19 * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 **************************************************************************/
22 /*
23 * Authors
24 * Thomas Hellström <thomas-at-tungstengraphics-dot-com>
25 */
26
27 #ifndef TTM_FENCE_USER_H
28 #define TTM_FENCE_USER_H
29
30 #if !defined(__KERNEL__) && !defined(_KERNEL)
31 #include <stdint.h>
32 #endif
33
34 #define TTM_FENCE_MAJOR 0
35 #define TTM_FENCE_MINOR 1
36 #define TTM_FENCE_PL 0
37 #define TTM_FENCE_DATE "080819"
38
39 /**
40 * struct ttm_fence_signaled_req
41 *
42 * @handle: Handle to the fence object. Input.
43 *
44 * @fence_type: Fence types we want to flush. Input.
45 *
46 * @flush: Boolean. Flush the indicated fence_types. Input.
47 *
48 * Argument to the TTM_FENCE_SIGNALED ioctl.
49 */
50
51 struct ttm_fence_signaled_req {
52 uint32_t handle;
53 uint32_t fence_type;
54 int32_t flush;
55 uint32_t pad64;
56 };
57
58 /**
59 * struct ttm_fence_rep
60 *
61 * @signaled_types: Fence type that has signaled.
62 *
63 * @fence_error: Command execution error.
64 * Hardware errors that are consequences of the execution
65 * of the command stream preceding the fence are reported
66 * here.
67 *
68 * Output argument to the TTM_FENCE_SIGNALED and
69 * TTM_FENCE_FINISH ioctls.
70 */
71
72 struct ttm_fence_rep {
73 uint32_t signaled_types;
74 uint32_t fence_error;
75 };
76
77 union ttm_fence_signaled_arg {
78 struct ttm_fence_signaled_req req;
79 struct ttm_fence_rep rep;
80 };
81
82 /*
83 * Waiting mode flags for the TTM_FENCE_FINISH ioctl.
84 *
85 * TTM_FENCE_FINISH_MODE_LAZY: Allow for sleeps during polling
86 * wait.
87 *
88 * TTM_FENCE_FINISH_MODE_NO_BLOCK: Don't block waiting for GPU,
89 * but return -EBUSY if the buffer is busy.
90 */
91
92 #define TTM_FENCE_FINISH_MODE_LAZY (1 << 0)
93 #define TTM_FENCE_FINISH_MODE_NO_BLOCK (1 << 1)
94
95 /**
96 * struct ttm_fence_finish_req
97 *
98 * @handle: Handle to the fence object. Input.
99 *
100 * @fence_type: Fence types we want to finish.
101 *
102 * @mode: Wait mode.
103 *
104 * Input to the TTM_FENCE_FINISH ioctl.
105 */
106
107 struct ttm_fence_finish_req {
108 uint32_t handle;
109 uint32_t fence_type;
110 uint32_t mode;
111 uint32_t pad64;
112 };
113
114 union ttm_fence_finish_arg {
115 struct ttm_fence_finish_req req;
116 struct ttm_fence_rep rep;
117 };
118
119 /**
120 * struct ttm_fence_unref_arg
121 *
122 * @handle: Handle to the fence object.
123 *
124 * Argument to the TTM_FENCE_UNREF ioctl.
125 */
126
127 struct ttm_fence_unref_arg {
128 uint32_t handle;
129 uint32_t pad64;
130 };
131
132 /*
133 * Ioctl offsets from extenstion start.
134 */
135
136 #define TTM_FENCE_SIGNALED 0x01
137 #define TTM_FENCE_FINISH 0x02
138 #define TTM_FENCE_UNREF 0x03
139
140 #endif