fix mali for ttab
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / misc / mediatek / gpu / ged / src / ged_bridge.c
CommitLineData
6fa3eb70 1#include <linux/kernel.h>
765691f5 2#include <linux/mtk_gpu_utility.h>
6fa3eb70
S
3
4#include "ged_base.h"
5#include "ged_bridge.h"
6#include "ged_log.h"
7#include "ged_profile_dvfs.h"
8#include "ged_monitor_3D_fence.h"
db9a41fa
S
9#include "ged_notify_sw_vsync.h"
10#include "ged_dvfs.h"
6fa3eb70
S
11
12//-----------------------------------------------------------------------------
13int ged_bridge_log_buf_get(
db9a41fa
S
14 GED_BRIDGE_IN_LOGBUFGET *psLogBufGetIN,
15 GED_BRIDGE_OUT_LOGBUFGET *psLogBufGetOUT)
6fa3eb70 16{
db9a41fa
S
17 psLogBufGetOUT->hLogBuf = ged_log_buf_get(psLogBufGetIN->acName);
18 psLogBufGetOUT->eError = psLogBufGetOUT->hLogBuf ? GED_OK : GED_ERROR_FAIL;
19 return 0;
6fa3eb70
S
20}
21//-----------------------------------------------------------------------------
22int ged_bridge_log_buf_write(
db9a41fa
S
23 GED_BRIDGE_IN_LOGBUFWRITE *psLogBufWriteIN,
24 GED_BRIDGE_OUT_LOGBUFWRITE *psLogBufWriteOUT)
6fa3eb70 25{
db9a41fa
S
26 psLogBufWriteOUT->eError =
27 ged_log_buf_print2(psLogBufWriteIN->hLogBuf, psLogBufWriteIN->attrs, psLogBufWriteIN->acLogBuf);
6fa3eb70
S
28
29#if 0
db9a41fa
S
30 if (ged_log_buf_write(
31 psLogBufWriteIN->hLogBuf,
32 /*from user*/psLogBufWriteIN->acLogBuf,
33 GED_BRIDGE_IN_LOGBUF_SIZE) > 0)
34 {
35 psLogBufWriteOUT->eError = GED_OK;
36 }
37 else
38 {
39 psLogBufWriteOUT->eError = GED_ERROR_FAIL;
40 }
6fa3eb70 41#endif
db9a41fa 42 return 0;
6fa3eb70
S
43}
44//-----------------------------------------------------------------------------
45int ged_bridge_log_buf_reset(
db9a41fa
S
46 GED_BRIDGE_IN_LOGBUFRESET *psLogBufResetIn,
47 GED_BRIDGE_OUT_LOGBUFRESET *psLogBufResetOUT)
6fa3eb70 48{
db9a41fa
S
49 psLogBufResetOUT->eError = ged_log_buf_reset(psLogBufResetIn->hLogBuf);
50 return 0;
6fa3eb70
S
51}
52//-----------------------------------------------------------------------------
53int ged_bridge_boost_gpu_freq(
db9a41fa
S
54 GED_BRIDGE_IN_BOOSTGPUFREQ *psBoostGpuFreqIN,
55 GED_BRIDGE_OUT_BOOSTGPUFREQ *psBoostGpuFreqOUT)
6fa3eb70
S
56{
57#if 1
db9a41fa 58 psBoostGpuFreqOUT->eError = mtk_boost_gpu_freq() ? GED_OK : GED_ERROR_FAIL;
6fa3eb70 59#else
db9a41fa
S
60 unsigned int ui32Count;
61 if (mtk_custom_get_gpu_freq_level_count(&ui32Count))
62 {
63 int i32Level = (ui32Count - 1) - GED_BOOST_GPU_FREQ_LEVEL_MAX - psBoostGpuFreqIN->eGPUFreqLevel;
64 mtk_boost_gpu_freq(i32Level);
65 psBoostGpuFreqOUT->eError = GED_OK;
66 }
67 else
68 {
69 psBoostGpuFreqOUT->eError = GED_ERROR_FAIL;
70 }
6fa3eb70 71#endif
db9a41fa 72 return 0;
6fa3eb70
S
73}
74//-----------------------------------------------------------------------------
75int ged_bridge_monitor_3D_fence(
db9a41fa
S
76 GED_BRIDGE_IN_MONITOR3DFENCE *psMonitor3DFenceINT,
77 GED_BRIDGE_OUT_MONITOR3DFENCE *psMonitor3DFenceOUT)
6fa3eb70 78{
db9a41fa
S
79 psMonitor3DFenceOUT->eError = ged_monitor_3D_fence_add(psMonitor3DFenceINT->fd);
80 return 0;
6fa3eb70 81}
db9a41fa
S
82//-----------------------------------------------------------------------------
83int ged_bridge_query_info(
84 GED_BRIDGE_IN_QUERY_INFO *psQueryInfoINT,
85 GED_BRIDGE_OUT_QUERY_INFO *psQueryInfoOUT)
86{
87 psQueryInfoOUT->retrieve = ged_query_info( psQueryInfoINT->eType);
88 return 0;
89}
90//-----------------------------------------------------------------------------
91int ged_bridge_notify_vsync(
92 GED_BRIDGE_IN_NOTIFY_VSYNC *psNotifyVsyncINT,
93 GED_BRIDGE_OUT_NOTIFY_VSYNC *psNotifyVsyncOUT)
94{
95 psNotifyVsyncOUT->eError =
96 //ged_notify_vsync(psNotifyVsyncINT->eType, &psNotifyVsyncOUT->t);
97 ged_notify_sw_vsync(psNotifyVsyncINT->eType, &psNotifyVsyncOUT->sQueryData);
98
99 return 0;
100}
101//-----------------------------------------------------------------------------
102int ged_bridge_dvfs_probe(
103 GED_BRIDGE_IN_DVFS_PROBE *psDVFSProbeINT,
104 GED_BRIDGE_OUT_DVFS_PROBE *psDVFSProbeOUT)
105{
106 psDVFSProbeOUT->eError = ged_dvfs_probe(psDVFSProbeINT->pid);
107 return 0;
108}
109
110//-----------------------------------------------------------------------------
111int ged_bridge_dvfs_um_retrun(
112 GED_BRIDGE_IN_DVFS_UM_RETURN *psDVFS_UM_returnINT,
113 GED_BRIDGE_OUT_DVFS_UM_RETURN *psDVFS_UM_returnOUT)
114{
115 psDVFS_UM_returnOUT->eError =
116 ged_dvfs_um_commit( psDVFS_UM_returnINT->gpu_tar_freq,
117 psDVFS_UM_returnINT->bFallback);
118 return 0;
119}
120
121