ged_bridge.h 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290
  1. /*
  2. * Copyright (C) 2015 MediaTek Inc.
  3. *
  4. * This program is free software: you can redistribute it and/or modify
  5. * it under the terms of the GNU General Public License version 2 as
  6. * published by the Free Software Foundation.
  7. *
  8. * This program is distributed in the hope that it will be useful,
  9. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. * GNU General Public License for more details.
  12. */
  13. #ifndef __GED_BRIDGE_H__
  14. #define __GED_BRIDGE_H__
  15. #include "ged_base.h"
  16. #include "ged_log.h"
  17. #include "ged_type.h"
  18. typedef struct _GED_BRIDGE_PACKAGE
  19. {
  20. unsigned int ui32FunctionID;
  21. int i32Size;
  22. void *pvParamIn;
  23. int i32InBufferSize;
  24. void *pvParamOut;
  25. int i32OutBufferSize;
  26. } GED_BRIDGE_PACKAGE;
  27. /*****************************************************************************
  28. * IOCTL values.
  29. *****************************************************************************/
  30. #define GED_MAGIC 'g'
  31. #define GED_IO(INDEX) _IO(GED_MAGIC, INDEX, GED_BRIDGE_PACKAGE)
  32. #define GED_IOW(INDEX) _IOW(GED_MAGIC, INDEX, GED_BRIDGE_PACKAGE)
  33. #define GED_IOR(INDEX) _IOR(GED_MAGIC, INDEX, GED_BRIDGE_PACKAGE)
  34. #define GED_IOWR(INDEX) _IOWR(GED_MAGIC, INDEX, GED_BRIDGE_PACKAGE)
  35. #define GED_GET_BRIDGE_ID(X) _IOC_NR(X)
  36. /******************************************************************************
  37. * IOCTL Commands
  38. ******************************************************************************/
  39. typedef enum
  40. {
  41. GED_BRIDGE_COMMAND_LOG_BUF_GET,
  42. GED_BRIDGE_COMMAND_LOG_BUF_WRITE,
  43. GED_BRIDGE_COMMAND_LOG_BUF_RESET,
  44. GED_BRIDGE_COMMAND_BOOST_GPU_FREQ,
  45. GED_BRIDGE_COMMAND_MONITOR_3D_FENCE,
  46. GED_BRIDGE_COMMAND_QUERY_INFO,
  47. GED_BRIDGE_COMMAND_NOTIFY_VSYNC,
  48. GED_BRIDGE_COMMAND_DVFS_PROBE,
  49. GED_BRIDGE_COMMAND_DVFS_UM_RETURN,
  50. GED_BRIDGE_COMMAND_EVENT_NOTIFY,
  51. } GED_BRIDGE_COMMAND_ID;
  52. #define GED_BRIDGE_IO_LOG_BUF_GET GED_IOWR(GED_BRIDGE_COMMAND_LOG_BUF_GET)
  53. #define GED_BRIDGE_IO_LOG_BUF_WRITE GED_IOWR(GED_BRIDGE_COMMAND_LOG_BUF_WRITE)
  54. #define GED_BRIDGE_IO_LOG_BUF_RESET GED_IOWR(GED_BRIDGE_COMMAND_LOG_BUF_RESET)
  55. #define GED_BRIDGE_IO_BOOST_GPU_FREQ GED_IOWR(GED_BRIDGE_COMMAND_BOOST_GPU_FREQ)
  56. #define GED_BRIDGE_IO_MONITOR_3D_FENCE GED_IOWR(GED_BRIDGE_COMMAND_MONITOR_3D_FENCE)
  57. #define GED_BRIDGE_IO_QUERY_INFO GED_IOWR(GED_BRIDGE_COMMAND_QUERY_INFO)
  58. #define GED_BRIDGE_IO_NOTIFY_VSYNC GED_IOWR(GED_BRIDGE_COMMAND_NOTIFY_VSYNC)
  59. #define GED_BRIDGE_IO_DVFS_PROBE GED_IOWR(GED_BRIDGE_COMMAND_DVFS_PROBE)
  60. #define GED_BRIDGE_IO_DVFS_UM_RETURN GED_IOWR(GED_BRIDGE_COMMAND_DVFS_UM_RETURN)
  61. #define GED_BRIDGE_IO_EVENT_NOTIFY GED_IOWR(GED_BRIDGE_COMMAND_EVENT_NOTIFY)
  62. /*****************************************************************************
  63. * LOG_BUF_GET
  64. *****************************************************************************/
  65. /* Bridge in structure for LOG_BUF_GET */
  66. typedef struct GED_BRIDGE_IN_LOGBUFGET_TAG
  67. {
  68. char acName[GED_LOG_BUF_NAME_LENGTH];
  69. } GED_BRIDGE_IN_LOGBUFGET;
  70. /* Bridge out structure for LOG_BUF_GETC */
  71. typedef struct GED_BRIDGE_OUT_LOGBUFGET_TAG
  72. {
  73. GED_ERROR eError;
  74. GED_LOG_BUF_HANDLE hLogBuf;
  75. } GED_BRIDGE_OUT_LOGBUFGET;
  76. /*****************************************************************************
  77. * LOG_BUF_WRITE
  78. *****************************************************************************/
  79. #define GED_BRIDGE_IN_LOGBUF_SIZE 320
  80. /* Bridge in structure for LOG_BUF_WRITE */
  81. typedef struct GED_BRIDGE_IN_LOGBUFWRITE_TAG
  82. {
  83. GED_LOG_BUF_HANDLE hLogBuf;
  84. int attrs;
  85. char acLogBuf[GED_BRIDGE_IN_LOGBUF_SIZE];
  86. } GED_BRIDGE_IN_LOGBUFWRITE;
  87. /* Bridge out structure for LOG_BUF_WRITE */
  88. typedef struct GED_BRIDGE_OUT_LOGBUFWRITE_TAG
  89. {
  90. GED_ERROR eError;
  91. } GED_BRIDGE_OUT_LOGBUFWRITE;
  92. /******************************************************************************
  93. * LOG_BUF_RESET
  94. ******************************************************************************/
  95. /* Bridge in structure for LOG_BUF_RESET */
  96. typedef struct GED_BRIDGE_IN_LOGBUFRESET_TAG
  97. {
  98. GED_LOG_BUF_HANDLE hLogBuf;
  99. } GED_BRIDGE_IN_LOGBUFRESET;
  100. /* Bridge out structure for LOG_BUF_RESET */
  101. typedef struct GED_BRIDGE_OUT_LOGBUFRESET_TAG
  102. {
  103. GED_ERROR eError;
  104. } GED_BRIDGE_OUT_LOGBUFRESET;
  105. /*****************************************************************************
  106. * BOOST GPU FREQ
  107. *****************************************************************************/
  108. typedef enum
  109. {
  110. GED_BOOST_GPU_FREQ_LEVEL_MAX = 100
  111. } GED_BOOST_GPU_FREQ_LEVEL;
  112. /* Bridge in structure for LOG_BUF_WRITE */
  113. typedef struct GED_BRIDGE_IN_BOOSTGPUFREQ_TAG
  114. {
  115. GED_BOOST_GPU_FREQ_LEVEL eGPUFreqLevel;
  116. } GED_BRIDGE_IN_BOOSTGPUFREQ;
  117. /* Bridge out structure for LOG_BUF_WRITE */
  118. typedef struct GED_BRIDGE_OUT_BOOSTGPUFREQ_TAG
  119. {
  120. GED_ERROR eError;
  121. } GED_BRIDGE_OUT_BOOSTGPUFREQ;
  122. /*****************************************************************************
  123. * MONITOR 3D FENCE
  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. /* Bridge out structure for MONITOR3DFENCE */
  131. typedef struct GED_BRIDGE_OUT_MONITOR3DFENCE_TAG
  132. {
  133. GED_ERROR eError;
  134. } GED_BRIDGE_OUT_MONITOR3DFENCE;
  135. /*****************************************************************************
  136. * QUERY INFO
  137. *****************************************************************************/
  138. /* Bridge in structure for QUERY INFO*/
  139. typedef struct GED_BRIDGE_IN_QUERY_INFO_TAG
  140. {
  141. GED_INFO eType;
  142. } GED_BRIDGE_IN_QUERY_INFO;
  143. /* Bridge out structure for QUERY INFO*/
  144. typedef struct GED_BRIDGE_OUT_QUERY_INFO_TAG
  145. {
  146. unsigned long retrieve;
  147. } GED_BRIDGE_OUT_QUERY_INFO;
  148. /*****************************************************************************
  149. * NOTIFY VSYNC
  150. *****************************************************************************/
  151. /* Bridge in structure for VSYNCEVENT */
  152. typedef struct GED_BRIDGE_IN_NOTIFY_VSYNC_TAG
  153. {
  154. GED_VSYNC_TYPE eType;
  155. } GED_BRIDGE_IN_NOTIFY_VSYNC;
  156. /* Bridge out structure for VSYNCEVENT */
  157. typedef struct GED_BRIDGE_OUT_NOTIFY_VSYNC_TAG
  158. {
  159. GED_DVFS_UM_QUERY_PACK sQueryData;
  160. GED_ERROR eError;
  161. } GED_BRIDGE_OUT_NOTIFY_VSYNC;
  162. /*****************************************************************************
  163. * DVFS PROBE
  164. *****************************************************************************/
  165. /* Bridge in structure for SWVSYNCEVENT */
  166. typedef struct GED_BRIDGE_IN_DVFS_PROBE_TAG
  167. {
  168. int pid;
  169. } GED_BRIDGE_IN_DVFS_PROBE;
  170. /* Bridge out structure for RECORDSWAPBUFFERS */
  171. typedef struct GED_BRIDGE_OUT_DVFS_PROBE_TAG
  172. {
  173. GED_ERROR eError;
  174. } GED_BRIDGE_OUT_DVFS_PROBE;
  175. /*****************************************************************************
  176. * DVFS UM RETURN
  177. *****************************************************************************/
  178. /* Bridge in structure for DVFS_UM_RETURN */
  179. typedef struct GED_BRIDGE_IN_DVFS_UM_RETURN_TAG
  180. {
  181. unsigned long gpu_tar_freq;
  182. bool bFallback;
  183. } GED_BRIDGE_IN_DVFS_UM_RETURN;
  184. /* Bridge out structure for DVFS_UM_RETURN */
  185. typedef struct GED_BRIDGE_OUT_DVFS_UM_RETURN_TAG
  186. {
  187. GED_ERROR eError;
  188. } GED_BRIDGE_OUT_DVFS_UM_RETURN;
  189. /*****************************************************************************
  190. * EVENT NOTIFY
  191. *****************************************************************************/
  192. /* Bridge in structure for EVENT_NOTIFY */
  193. typedef struct GED_BRIDGE_IN_EVENT_NOTIFY_TAG
  194. {
  195. GED_DVFS_VSYNC_OFFSET_SWITCH_CMD eEvent;
  196. bool bSwitch;
  197. } GED_BRIDGE_IN_EVENT_NOTIFY;
  198. /* Bridge out structure for EVENT_NOTIFY */
  199. typedef struct GED_BRIDGE_OUT_EVENT_NOTIFY_TAG
  200. {
  201. GED_ERROR eError;
  202. } GED_BRIDGE_OUT_EVENT_NOTIFY;
  203. /*****************************************************************************
  204. * BRIDGE FUNCTIONS
  205. *****************************************************************************/
  206. int ged_bridge_log_buf_get(
  207. GED_BRIDGE_IN_LOGBUFGET *psLogBufGetIN,
  208. GED_BRIDGE_OUT_LOGBUFGET *psLogBufGetOUT);
  209. int ged_bridge_log_buf_write(
  210. GED_BRIDGE_IN_LOGBUFWRITE *psLogBufWriteIN,
  211. GED_BRIDGE_OUT_LOGBUFWRITE *psLogBufWriteOUT);
  212. int ged_bridge_log_buf_reset(
  213. GED_BRIDGE_IN_LOGBUFRESET *psLogBufResetIn,
  214. GED_BRIDGE_OUT_LOGBUFRESET *psLogBufResetOUT);
  215. int ged_bridge_boost_gpu_freq(
  216. GED_BRIDGE_IN_BOOSTGPUFREQ *psBoostGpuFreqIN,
  217. GED_BRIDGE_OUT_BOOSTGPUFREQ *psBoostGpuFreqOUT);
  218. int ged_bridge_monitor_3D_fence(
  219. GED_BRIDGE_IN_MONITOR3DFENCE *psMonitor3DFenceINT,
  220. GED_BRIDGE_OUT_MONITOR3DFENCE *psMonitor3DFenceOUT);
  221. int ged_bridge_query_info(
  222. GED_BRIDGE_IN_QUERY_INFO *psQueryInfoINT,
  223. GED_BRIDGE_OUT_QUERY_INFO *psQueryInfoOUT);
  224. int ged_bridge_notify_vsync(
  225. GED_BRIDGE_IN_NOTIFY_VSYNC *psNotifyVsyncINT,
  226. GED_BRIDGE_OUT_NOTIFY_VSYNC *psNotifyVsyncOUT);
  227. int ged_bridge_dvfs_probe(
  228. GED_BRIDGE_IN_DVFS_PROBE *psDVFSProbeINT,
  229. GED_BRIDGE_OUT_DVFS_PROBE *psDVFSProbeOUT);
  230. int ged_bridge_dvfs_um_retrun(
  231. GED_BRIDGE_IN_DVFS_UM_RETURN *psDVFS_UM_returnINT,
  232. GED_BRIDGE_OUT_DVFS_UM_RETURN *psDVFS_UM_returnOUT);
  233. int ged_bridge_event_notify(
  234. GED_BRIDGE_IN_EVENT_NOTIFY *psEVENT_NOTIFYINT,
  235. GED_BRIDGE_OUT_EVENT_NOTIFY *psEVENT_NOTIFYOUT);
  236. #endif