mali mess
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / misc / mediatek / gpu / ged / include / ged_bridge.h
CommitLineData
6fa3eb70
S
1#ifndef __GED_BRIDGE_H__
2#define __GED_BRIDGE_H__
3
4#include "ged_base.h"
5#include "ged_log.h"
02af6beb 6#include "ged_type.h"
6fa3eb70
S
7
8typedef struct _GED_BRIDGE_PACKAGE
9{
10 unsigned int ui32FunctionID;
11 int i32Size;
12 void *pvParamIn;
13 int i32InBufferSize;
14 void *pvParamOut;
15 int i32OutBufferSize;
16} GED_BRIDGE_PACKAGE;
17
18/*****************************************************************************
19 * IOCTL values.
20 *****************************************************************************/
21
22#define GED_MAGIC 'g'
23
24#define GED_IO(INDEX) _IO(GED_MAGIC, INDEX, GED_BRIDGE_PACKAGE)
25#define GED_IOW(INDEX) _IOW(GED_MAGIC, INDEX, GED_BRIDGE_PACKAGE)
26#define GED_IOR(INDEX) _IOR(GED_MAGIC, INDEX, GED_BRIDGE_PACKAGE)
27#define GED_IOWR(INDEX) _IOWR(GED_MAGIC, INDEX, GED_BRIDGE_PACKAGE)
28#define GED_GET_BRIDGE_ID(X) _IOC_NR(X)
29
02af6beb 30/******************************************************************************
6fa3eb70 31 * IOCTL Commands
02af6beb 32 ******************************************************************************/
6fa3eb70
S
33typedef enum
34{
35 GED_BRIDGE_COMMAND_LOG_BUF_GET,
36 GED_BRIDGE_COMMAND_LOG_BUF_WRITE,
37 GED_BRIDGE_COMMAND_LOG_BUF_RESET,
38 GED_BRIDGE_COMMAND_BOOST_GPU_FREQ,
02af6beb
S
39 GED_BRIDGE_COMMAND_MONITOR_3D_FENCE,
40 GED_BRIDGE_COMMAND_QUERY_INFO,
41 GED_BRIDGE_COMMAND_NOTIFY_VSYNC,
42 GED_BRIDGE_COMMAND_DVFS_PROBE,
43 GED_BRIDGE_COMMAND_DVFS_UM_RETURN,
6fa3eb70
S
44} GED_BRIDGE_COMMAND_ID;
45
46#define GED_BRIDGE_IO_LOG_BUF_GET GED_IOWR(GED_BRIDGE_COMMAND_LOG_BUF_GET)
47#define GED_BRIDGE_IO_LOG_BUF_WRITE GED_IOWR(GED_BRIDGE_COMMAND_LOG_BUF_WRITE)
48#define GED_BRIDGE_IO_LOG_BUF_RESET GED_IOWR(GED_BRIDGE_COMMAND_LOG_BUF_RESET)
49#define GED_BRIDGE_IO_BOOST_GPU_FREQ GED_IOWR(GED_BRIDGE_COMMAND_BOOST_GPU_FREQ)
50#define GED_BRIDGE_IO_MONITOR_3D_FENCE GED_IOWR(GED_BRIDGE_COMMAND_MONITOR_3D_FENCE)
02af6beb
S
51#define GED_BRIDGE_IO_QUERY_INFO GED_IOWR(GED_BRIDGE_COMMAND_QUERY_INFO)
52#define GED_BRIDGE_IO_NOTIFY_VSYNC GED_IOWR(GED_BRIDGE_COMMAND_NOTIFY_VSYNC)
53#define GED_BRIDGE_IO_DVFS_PROBE GED_IOWR(GED_BRIDGE_COMMAND_DVFS_PROBE)
54#define GED_BRIDGE_IO_DVFS_UM_RETURN GED_IOWR(GED_BRIDGE_COMMAND_DVFS_UM_RETURN)
6fa3eb70
S
55
56/*****************************************************************************
57 * LOG_BUF_GET
58 *****************************************************************************/
59
60/* Bridge in structure for LOG_BUF_GET */
61typedef struct GED_BRIDGE_IN_LOGBUFGET_TAG
62{
63 char acName[GED_LOG_BUF_NAME_LENGTH];
64} GED_BRIDGE_IN_LOGBUFGET;
65
66
67/* Bridge out structure for LOG_BUF_GETC */
68typedef struct GED_BRIDGE_OUT_LOGBUFGET_TAG
69{
70 GED_ERROR eError;
71 GED_LOG_BUF_HANDLE hLogBuf;
72} GED_BRIDGE_OUT_LOGBUFGET;
73
74/*****************************************************************************
75 * LOG_BUF_WRITE
76 *****************************************************************************/
77
02af6beb 78#define GED_BRIDGE_IN_LOGBUF_SIZE 320
6fa3eb70
S
79
80/* Bridge in structure for LOG_BUF_WRITE */
81typedef struct GED_BRIDGE_IN_LOGBUFWRITE_TAG
82{
83 GED_LOG_BUF_HANDLE hLogBuf;
02af6beb 84 int attrs;
6fa3eb70
S
85 char acLogBuf[GED_BRIDGE_IN_LOGBUF_SIZE];
86} GED_BRIDGE_IN_LOGBUFWRITE;
87
88/* Bridge out structure for LOG_BUF_WRITE */
89typedef struct GED_BRIDGE_OUT_LOGBUFWRITE_TAG
90{
91 GED_ERROR eError;
92} GED_BRIDGE_OUT_LOGBUFWRITE;
93
94/******************************************************************************
95 * LOG_BUF_RESET
96 ******************************************************************************/
97
98/* Bridge in structure for LOG_BUF_RESET */
99typedef struct GED_BRIDGE_IN_LOGBUFRESET_TAG
100{
101 GED_LOG_BUF_HANDLE hLogBuf;
102} GED_BRIDGE_IN_LOGBUFRESET;
103
104/* Bridge out structure for LOG_BUF_RESET */
105typedef struct GED_BRIDGE_OUT_LOGBUFRESET_TAG
106{
107 GED_ERROR eError;
108} GED_BRIDGE_OUT_LOGBUFRESET;
109
110/*****************************************************************************
111 * BOOST GPU FREQ
112 *****************************************************************************/
113
114typedef enum
115{
116 GED_BOOST_GPU_FREQ_LEVEL_MAX = 100
117} GED_BOOST_GPU_FREQ_LEVEL;
118
119/* Bridge in structure for LOG_BUF_WRITE */
120typedef struct GED_BRIDGE_IN_BOOSTGPUFREQ_TAG
121{
122 GED_BOOST_GPU_FREQ_LEVEL eGPUFreqLevel;
123} GED_BRIDGE_IN_BOOSTGPUFREQ;
124
125/* Bridge out structure for LOG_BUF_WRITE */
126typedef struct GED_BRIDGE_OUT_BOOSTGPUFREQ_TAG
127{
128 GED_ERROR eError;
129} GED_BRIDGE_OUT_BOOSTGPUFREQ;
130
131/*****************************************************************************
132 * MONITOR 3D FENCE
133 *****************************************************************************/
134
135/* Bridge in structure for MONITOR3DFENCE */
136typedef struct GED_BRIDGE_IN_MONITOR3DFENCE_TAG
137{
138 int fd;
139} GED_BRIDGE_IN_MONITOR3DFENCE;
140
02af6beb 141/* Bridge out structure for MONITOR3DFENCE */
6fa3eb70
S
142typedef struct GED_BRIDGE_OUT_MONITOR3DFENCE_TAG
143{
144 GED_ERROR eError;
145} GED_BRIDGE_OUT_MONITOR3DFENCE;
146
02af6beb
S
147/*****************************************************************************
148 * QUERY INFO
149 *****************************************************************************/
150
151/* Bridge in structure for QUERY INFO*/
152typedef struct GED_BRIDGE_IN_QUERY_INFO_TAG
153{
154 GED_INFO eType;
155} GED_BRIDGE_IN_QUERY_INFO;
156
157
158/* Bridge out structure for QUERY INFO*/
159typedef struct GED_BRIDGE_OUT_QUERY_INFO_TAG
160{
161 unsigned long retrieve;
162} GED_BRIDGE_OUT_QUERY_INFO;
163/*****************************************************************************
164 * NOTIFY VSYNC
165 *****************************************************************************/
166
167/* Bridge in structure for VSYNCEVENT */
168typedef struct GED_BRIDGE_IN_NOTIFY_VSYNC_TAG
169{
170 GED_VSYNC_TYPE eType;
171} GED_BRIDGE_IN_NOTIFY_VSYNC;
172
173/* Bridge out structure for VSYNCEVENT */
174typedef struct GED_BRIDGE_OUT_NOTIFY_VSYNC_TAG
175{
176 GED_DVFS_UM_QUERY_PACK sQueryData;
177 GED_ERROR eError;
178} GED_BRIDGE_OUT_NOTIFY_VSYNC;
179
180/*****************************************************************************
181 * DVFS PROBE
182 *****************************************************************************/
183
184/* Bridge in structure for SWVSYNCEVENT */
185typedef struct GED_BRIDGE_IN_DVFS_PROBE_TAG
186{
187 int pid;
188} GED_BRIDGE_IN_DVFS_PROBE;
189
190/* Bridge out structure for RECORDSWAPBUFFERS */
191typedef struct GED_BRIDGE_OUT_DVFS_PROBE_TAG
192{
193 GED_ERROR eError;
194} GED_BRIDGE_OUT_DVFS_PROBE;
195
196/*****************************************************************************
197 * DVFS UM RETURN
198 *****************************************************************************/
199
200/* Bridge in structure for DVFS_UM_RETURN */
201typedef struct GED_BRIDGE_IN_DVFS_UM_RETURN_TAG
202{
203 unsigned long gpu_tar_freq;
204 bool bFallback;
205} GED_BRIDGE_IN_DVFS_UM_RETURN;
206
207/* Bridge out structure for DVFS_UM_RETURN */
208typedef struct GED_BRIDGE_OUT_DVFS_UM_RETURN_TAG
209{
210 GED_ERROR eError;
211} GED_BRIDGE_OUT_DVFS_UM_RETURN;
212
6fa3eb70
S
213/*****************************************************************************
214 * BRIDGE FUNCTIONS
215 *****************************************************************************/
216
217int ged_bridge_log_buf_get(
218 GED_BRIDGE_IN_LOGBUFGET *psLogBufGetIN,
219 GED_BRIDGE_OUT_LOGBUFGET *psLogBufGetOUT);
220
221int ged_bridge_log_buf_write(
222 GED_BRIDGE_IN_LOGBUFWRITE *psLogBufWriteIN,
223 GED_BRIDGE_OUT_LOGBUFWRITE *psLogBufWriteOUT);
224
225int ged_bridge_log_buf_reset(
226 GED_BRIDGE_IN_LOGBUFRESET *psLogBufResetIn,
227 GED_BRIDGE_OUT_LOGBUFRESET *psLogBufResetOUT);
228
229int ged_bridge_boost_gpu_freq(
230 GED_BRIDGE_IN_BOOSTGPUFREQ *psBoostGpuFreqIN,
231 GED_BRIDGE_OUT_BOOSTGPUFREQ *psBoostGpuFreqOUT);
232
233int ged_bridge_monitor_3D_fence(
234 GED_BRIDGE_IN_MONITOR3DFENCE *psMonitor3DFenceINT,
235 GED_BRIDGE_OUT_MONITOR3DFENCE *psMonitor3DFenceOUT);
236
02af6beb
S
237int ged_bridge_query_info(
238 GED_BRIDGE_IN_QUERY_INFO *psQueryInfoINT,
239 GED_BRIDGE_OUT_QUERY_INFO *psQueryInfoOUT);
240
241int ged_bridge_notify_vsync(
242 GED_BRIDGE_IN_NOTIFY_VSYNC *psNotifyVsyncINT,
243 GED_BRIDGE_OUT_NOTIFY_VSYNC *psNotifyVsyncOUT);
244
245int ged_bridge_dvfs_probe(
246 GED_BRIDGE_IN_DVFS_PROBE *psDVFSProbeINT,
247 GED_BRIDGE_OUT_DVFS_PROBE *psDVFSProbeOUT);
248
249int ged_bridge_dvfs_um_retrun(
250 GED_BRIDGE_IN_DVFS_UM_RETURN *psDVFS_UM_returnINT,
251 GED_BRIDGE_OUT_DVFS_UM_RETURN *psDVFS_UM_returnOUT);
252
6fa3eb70 253#endif