5281cf646077d66f2319c68385799a88a6e18924
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / misc / mediatek / gpu / ged / include / ged_bridge.h
1 #ifndef __GED_BRIDGE_H__
2 #define __GED_BRIDGE_H__
3
4 #include "ged_base.h"
5 #include "ged_log.h"
6
7 typedef struct _GED_BRIDGE_PACKAGE
8 {
9 unsigned int ui32FunctionID;
10 int i32Size;
11 void *pvParamIn;
12 int i32InBufferSize;
13 void *pvParamOut;
14 int i32OutBufferSize;
15 } GED_BRIDGE_PACKAGE;
16
17 /*****************************************************************************
18 * IOCTL values.
19 *****************************************************************************/
20
21 #define GED_MAGIC 'g'
22
23 #define GED_IO(INDEX) _IO(GED_MAGIC, INDEX, GED_BRIDGE_PACKAGE)
24 #define GED_IOW(INDEX) _IOW(GED_MAGIC, INDEX, GED_BRIDGE_PACKAGE)
25 #define GED_IOR(INDEX) _IOR(GED_MAGIC, INDEX, GED_BRIDGE_PACKAGE)
26 #define GED_IOWR(INDEX) _IOWR(GED_MAGIC, INDEX, GED_BRIDGE_PACKAGE)
27 #define GED_GET_BRIDGE_ID(X) _IOC_NR(X)
28
29 /*****************************************************************************
30 * IOCTL Commands
31 *****************************************************************************/
32 typedef enum
33 {
34 GED_BRIDGE_COMMAND_LOG_BUF_GET,
35 GED_BRIDGE_COMMAND_LOG_BUF_WRITE,
36 GED_BRIDGE_COMMAND_LOG_BUF_RESET,
37 GED_BRIDGE_COMMAND_BOOST_GPU_FREQ,
38 GED_BRIDGE_COMMAND_MONITOR_3D_FENCE
39 } GED_BRIDGE_COMMAND_ID;
40
41 #define GED_BRIDGE_IO_LOG_BUF_GET GED_IOWR(GED_BRIDGE_COMMAND_LOG_BUF_GET)
42 #define GED_BRIDGE_IO_LOG_BUF_WRITE GED_IOWR(GED_BRIDGE_COMMAND_LOG_BUF_WRITE)
43 #define GED_BRIDGE_IO_LOG_BUF_RESET GED_IOWR(GED_BRIDGE_COMMAND_LOG_BUF_RESET)
44 #define GED_BRIDGE_IO_BOOST_GPU_FREQ GED_IOWR(GED_BRIDGE_COMMAND_BOOST_GPU_FREQ)
45 #define GED_BRIDGE_IO_MONITOR_3D_FENCE GED_IOWR(GED_BRIDGE_COMMAND_MONITOR_3D_FENCE)
46
47 /*****************************************************************************
48 * LOG_BUF_GET
49 *****************************************************************************/
50
51 /* Bridge in structure for LOG_BUF_GET */
52 typedef struct GED_BRIDGE_IN_LOGBUFGET_TAG
53 {
54 char acName[GED_LOG_BUF_NAME_LENGTH];
55 } GED_BRIDGE_IN_LOGBUFGET;
56
57
58 /* Bridge out structure for LOG_BUF_GETC */
59 typedef struct GED_BRIDGE_OUT_LOGBUFGET_TAG
60 {
61 GED_ERROR eError;
62 GED_LOG_BUF_HANDLE hLogBuf;
63 } GED_BRIDGE_OUT_LOGBUFGET;
64
65 /*****************************************************************************
66 * LOG_BUF_WRITE
67 *****************************************************************************/
68
69 #define GED_BRIDGE_IN_LOGBUF_SIZE 512
70
71 /* Bridge in structure for LOG_BUF_WRITE */
72 typedef struct GED_BRIDGE_IN_LOGBUFWRITE_TAG
73 {
74 GED_LOG_BUF_HANDLE hLogBuf;
75 char acLogBuf[GED_BRIDGE_IN_LOGBUF_SIZE];
76 } GED_BRIDGE_IN_LOGBUFWRITE;
77
78 /* Bridge out structure for LOG_BUF_WRITE */
79 typedef struct GED_BRIDGE_OUT_LOGBUFWRITE_TAG
80 {
81 GED_ERROR eError;
82 } GED_BRIDGE_OUT_LOGBUFWRITE;
83
84 /******************************************************************************
85 * LOG_BUF_RESET
86 ******************************************************************************/
87
88 /* Bridge in structure for LOG_BUF_RESET */
89 typedef struct GED_BRIDGE_IN_LOGBUFRESET_TAG
90 {
91 GED_LOG_BUF_HANDLE hLogBuf;
92 } GED_BRIDGE_IN_LOGBUFRESET;
93
94 /* Bridge out structure for LOG_BUF_RESET */
95 typedef struct GED_BRIDGE_OUT_LOGBUFRESET_TAG
96 {
97 GED_ERROR eError;
98 } GED_BRIDGE_OUT_LOGBUFRESET;
99
100 /*****************************************************************************
101 * BOOST GPU FREQ
102 *****************************************************************************/
103
104 typedef enum
105 {
106 GED_BOOST_GPU_FREQ_LEVEL_MAX = 100
107 } GED_BOOST_GPU_FREQ_LEVEL;
108
109 /* Bridge in structure for LOG_BUF_WRITE */
110 typedef struct GED_BRIDGE_IN_BOOSTGPUFREQ_TAG
111 {
112 GED_BOOST_GPU_FREQ_LEVEL eGPUFreqLevel;
113 } GED_BRIDGE_IN_BOOSTGPUFREQ;
114
115 /* Bridge out structure for LOG_BUF_WRITE */
116 typedef struct GED_BRIDGE_OUT_BOOSTGPUFREQ_TAG
117 {
118 GED_ERROR eError;
119 } GED_BRIDGE_OUT_BOOSTGPUFREQ;
120
121 /*****************************************************************************
122 * MONITOR 3D FENCE
123 *****************************************************************************/
124
125 /* Bridge in structure for MONITOR3DFENCE */
126 typedef struct GED_BRIDGE_IN_MONITOR3DFENCE_TAG
127 {
128 int fd;
129 } GED_BRIDGE_IN_MONITOR3DFENCE;
130
131 /* Bridge out structure for RECORDSWAPBUFFERS */
132 typedef struct GED_BRIDGE_OUT_MONITOR3DFENCE_TAG
133 {
134 GED_ERROR eError;
135 } GED_BRIDGE_OUT_MONITOR3DFENCE;
136
137 /*****************************************************************************
138 * BRIDGE FUNCTIONS
139 *****************************************************************************/
140
141 int ged_bridge_log_buf_get(
142 GED_BRIDGE_IN_LOGBUFGET *psLogBufGetIN,
143 GED_BRIDGE_OUT_LOGBUFGET *psLogBufGetOUT);
144
145 int ged_bridge_log_buf_write(
146 GED_BRIDGE_IN_LOGBUFWRITE *psLogBufWriteIN,
147 GED_BRIDGE_OUT_LOGBUFWRITE *psLogBufWriteOUT);
148
149 int ged_bridge_log_buf_reset(
150 GED_BRIDGE_IN_LOGBUFRESET *psLogBufResetIn,
151 GED_BRIDGE_OUT_LOGBUFRESET *psLogBufResetOUT);
152
153 int ged_bridge_boost_gpu_freq(
154 GED_BRIDGE_IN_BOOSTGPUFREQ *psBoostGpuFreqIN,
155 GED_BRIDGE_OUT_BOOSTGPUFREQ *psBoostGpuFreqOUT);
156
157 int ged_bridge_monitor_3D_fence(
158 GED_BRIDGE_IN_MONITOR3DFENCE *psMonitor3DFenceINT,
159 GED_BRIDGE_OUT_MONITOR3DFENCE *psMonitor3DFenceOUT);
160
161 #endif