| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290 |
- /*
- * Copyright (C) 2015 MediaTek Inc.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- */
- #ifndef __GED_BRIDGE_H__
- #define __GED_BRIDGE_H__
- #include "ged_base.h"
- #include "ged_log.h"
- #include "ged_type.h"
- typedef struct _GED_BRIDGE_PACKAGE
- {
- unsigned int ui32FunctionID;
- int i32Size;
- void *pvParamIn;
- int i32InBufferSize;
- void *pvParamOut;
- int i32OutBufferSize;
- } GED_BRIDGE_PACKAGE;
- /*****************************************************************************
- * IOCTL values.
- *****************************************************************************/
- #define GED_MAGIC 'g'
- #define GED_IO(INDEX) _IO(GED_MAGIC, INDEX, GED_BRIDGE_PACKAGE)
- #define GED_IOW(INDEX) _IOW(GED_MAGIC, INDEX, GED_BRIDGE_PACKAGE)
- #define GED_IOR(INDEX) _IOR(GED_MAGIC, INDEX, GED_BRIDGE_PACKAGE)
- #define GED_IOWR(INDEX) _IOWR(GED_MAGIC, INDEX, GED_BRIDGE_PACKAGE)
- #define GED_GET_BRIDGE_ID(X) _IOC_NR(X)
- /******************************************************************************
- * IOCTL Commands
- ******************************************************************************/
- typedef enum
- {
- GED_BRIDGE_COMMAND_LOG_BUF_GET,
- GED_BRIDGE_COMMAND_LOG_BUF_WRITE,
- GED_BRIDGE_COMMAND_LOG_BUF_RESET,
- GED_BRIDGE_COMMAND_BOOST_GPU_FREQ,
- GED_BRIDGE_COMMAND_MONITOR_3D_FENCE,
- GED_BRIDGE_COMMAND_QUERY_INFO,
- GED_BRIDGE_COMMAND_NOTIFY_VSYNC,
- GED_BRIDGE_COMMAND_DVFS_PROBE,
- GED_BRIDGE_COMMAND_DVFS_UM_RETURN,
- GED_BRIDGE_COMMAND_EVENT_NOTIFY,
- } GED_BRIDGE_COMMAND_ID;
- #define GED_BRIDGE_IO_LOG_BUF_GET GED_IOWR(GED_BRIDGE_COMMAND_LOG_BUF_GET)
- #define GED_BRIDGE_IO_LOG_BUF_WRITE GED_IOWR(GED_BRIDGE_COMMAND_LOG_BUF_WRITE)
- #define GED_BRIDGE_IO_LOG_BUF_RESET GED_IOWR(GED_BRIDGE_COMMAND_LOG_BUF_RESET)
- #define GED_BRIDGE_IO_BOOST_GPU_FREQ GED_IOWR(GED_BRIDGE_COMMAND_BOOST_GPU_FREQ)
- #define GED_BRIDGE_IO_MONITOR_3D_FENCE GED_IOWR(GED_BRIDGE_COMMAND_MONITOR_3D_FENCE)
- #define GED_BRIDGE_IO_QUERY_INFO GED_IOWR(GED_BRIDGE_COMMAND_QUERY_INFO)
- #define GED_BRIDGE_IO_NOTIFY_VSYNC GED_IOWR(GED_BRIDGE_COMMAND_NOTIFY_VSYNC)
- #define GED_BRIDGE_IO_DVFS_PROBE GED_IOWR(GED_BRIDGE_COMMAND_DVFS_PROBE)
- #define GED_BRIDGE_IO_DVFS_UM_RETURN GED_IOWR(GED_BRIDGE_COMMAND_DVFS_UM_RETURN)
- #define GED_BRIDGE_IO_EVENT_NOTIFY GED_IOWR(GED_BRIDGE_COMMAND_EVENT_NOTIFY)
- /*****************************************************************************
- * LOG_BUF_GET
- *****************************************************************************/
-
- /* Bridge in structure for LOG_BUF_GET */
- typedef struct GED_BRIDGE_IN_LOGBUFGET_TAG
- {
- char acName[GED_LOG_BUF_NAME_LENGTH];
- } GED_BRIDGE_IN_LOGBUFGET;
- /* Bridge out structure for LOG_BUF_GETC */
- typedef struct GED_BRIDGE_OUT_LOGBUFGET_TAG
- {
- GED_ERROR eError;
- GED_LOG_BUF_HANDLE hLogBuf;
- } GED_BRIDGE_OUT_LOGBUFGET;
- /*****************************************************************************
- * LOG_BUF_WRITE
- *****************************************************************************/
- #define GED_BRIDGE_IN_LOGBUF_SIZE 320
- /* Bridge in structure for LOG_BUF_WRITE */
- typedef struct GED_BRIDGE_IN_LOGBUFWRITE_TAG
- {
- GED_LOG_BUF_HANDLE hLogBuf;
- int attrs;
- char acLogBuf[GED_BRIDGE_IN_LOGBUF_SIZE];
- } GED_BRIDGE_IN_LOGBUFWRITE;
- /* Bridge out structure for LOG_BUF_WRITE */
- typedef struct GED_BRIDGE_OUT_LOGBUFWRITE_TAG
- {
- GED_ERROR eError;
- } GED_BRIDGE_OUT_LOGBUFWRITE;
- /******************************************************************************
- * LOG_BUF_RESET
- ******************************************************************************/
- /* Bridge in structure for LOG_BUF_RESET */
- typedef struct GED_BRIDGE_IN_LOGBUFRESET_TAG
- {
- GED_LOG_BUF_HANDLE hLogBuf;
- } GED_BRIDGE_IN_LOGBUFRESET;
- /* Bridge out structure for LOG_BUF_RESET */
- typedef struct GED_BRIDGE_OUT_LOGBUFRESET_TAG
- {
- GED_ERROR eError;
- } GED_BRIDGE_OUT_LOGBUFRESET;
- /*****************************************************************************
- * BOOST GPU FREQ
- *****************************************************************************/
- typedef enum
- {
- GED_BOOST_GPU_FREQ_LEVEL_MAX = 100
- } GED_BOOST_GPU_FREQ_LEVEL;
- /* Bridge in structure for LOG_BUF_WRITE */
- typedef struct GED_BRIDGE_IN_BOOSTGPUFREQ_TAG
- {
- GED_BOOST_GPU_FREQ_LEVEL eGPUFreqLevel;
- } GED_BRIDGE_IN_BOOSTGPUFREQ;
- /* Bridge out structure for LOG_BUF_WRITE */
- typedef struct GED_BRIDGE_OUT_BOOSTGPUFREQ_TAG
- {
- GED_ERROR eError;
- } GED_BRIDGE_OUT_BOOSTGPUFREQ;
- /*****************************************************************************
- * MONITOR 3D FENCE
- *****************************************************************************/
- /* Bridge in structure for MONITOR3DFENCE */
- typedef struct GED_BRIDGE_IN_MONITOR3DFENCE_TAG
- {
- int fd;
- } GED_BRIDGE_IN_MONITOR3DFENCE;
- /* Bridge out structure for MONITOR3DFENCE */
- typedef struct GED_BRIDGE_OUT_MONITOR3DFENCE_TAG
- {
- GED_ERROR eError;
- } GED_BRIDGE_OUT_MONITOR3DFENCE;
- /*****************************************************************************
- * QUERY INFO
- *****************************************************************************/
- /* Bridge in structure for QUERY INFO*/
- typedef struct GED_BRIDGE_IN_QUERY_INFO_TAG
- {
- GED_INFO eType;
- } GED_BRIDGE_IN_QUERY_INFO;
- /* Bridge out structure for QUERY INFO*/
- typedef struct GED_BRIDGE_OUT_QUERY_INFO_TAG
- {
- unsigned long retrieve;
- } GED_BRIDGE_OUT_QUERY_INFO;
- /*****************************************************************************
- * NOTIFY VSYNC
- *****************************************************************************/
- /* Bridge in structure for VSYNCEVENT */
- typedef struct GED_BRIDGE_IN_NOTIFY_VSYNC_TAG
- {
- GED_VSYNC_TYPE eType;
- } GED_BRIDGE_IN_NOTIFY_VSYNC;
- /* Bridge out structure for VSYNCEVENT */
- typedef struct GED_BRIDGE_OUT_NOTIFY_VSYNC_TAG
- {
- GED_DVFS_UM_QUERY_PACK sQueryData;
- GED_ERROR eError;
- } GED_BRIDGE_OUT_NOTIFY_VSYNC;
- /*****************************************************************************
- * DVFS PROBE
- *****************************************************************************/
- /* Bridge in structure for SWVSYNCEVENT */
- typedef struct GED_BRIDGE_IN_DVFS_PROBE_TAG
- {
- int pid;
- } GED_BRIDGE_IN_DVFS_PROBE;
- /* Bridge out structure for RECORDSWAPBUFFERS */
- typedef struct GED_BRIDGE_OUT_DVFS_PROBE_TAG
- {
- GED_ERROR eError;
- } GED_BRIDGE_OUT_DVFS_PROBE;
- /*****************************************************************************
- * DVFS UM RETURN
- *****************************************************************************/
- /* Bridge in structure for DVFS_UM_RETURN */
- typedef struct GED_BRIDGE_IN_DVFS_UM_RETURN_TAG
- {
- unsigned long gpu_tar_freq;
- bool bFallback;
- } GED_BRIDGE_IN_DVFS_UM_RETURN;
- /* Bridge out structure for DVFS_UM_RETURN */
- typedef struct GED_BRIDGE_OUT_DVFS_UM_RETURN_TAG
- {
- GED_ERROR eError;
- } GED_BRIDGE_OUT_DVFS_UM_RETURN;
- /*****************************************************************************
- * EVENT NOTIFY
- *****************************************************************************/
- /* Bridge in structure for EVENT_NOTIFY */
- typedef struct GED_BRIDGE_IN_EVENT_NOTIFY_TAG
- {
- GED_DVFS_VSYNC_OFFSET_SWITCH_CMD eEvent;
- bool bSwitch;
- } GED_BRIDGE_IN_EVENT_NOTIFY;
- /* Bridge out structure for EVENT_NOTIFY */
- typedef struct GED_BRIDGE_OUT_EVENT_NOTIFY_TAG
- {
- GED_ERROR eError;
- } GED_BRIDGE_OUT_EVENT_NOTIFY;
- /*****************************************************************************
- * BRIDGE FUNCTIONS
- *****************************************************************************/
- int ged_bridge_log_buf_get(
- GED_BRIDGE_IN_LOGBUFGET *psLogBufGetIN,
- GED_BRIDGE_OUT_LOGBUFGET *psLogBufGetOUT);
- int ged_bridge_log_buf_write(
- GED_BRIDGE_IN_LOGBUFWRITE *psLogBufWriteIN,
- GED_BRIDGE_OUT_LOGBUFWRITE *psLogBufWriteOUT);
- int ged_bridge_log_buf_reset(
- GED_BRIDGE_IN_LOGBUFRESET *psLogBufResetIn,
- GED_BRIDGE_OUT_LOGBUFRESET *psLogBufResetOUT);
- int ged_bridge_boost_gpu_freq(
- GED_BRIDGE_IN_BOOSTGPUFREQ *psBoostGpuFreqIN,
- GED_BRIDGE_OUT_BOOSTGPUFREQ *psBoostGpuFreqOUT);
- int ged_bridge_monitor_3D_fence(
- GED_BRIDGE_IN_MONITOR3DFENCE *psMonitor3DFenceINT,
- GED_BRIDGE_OUT_MONITOR3DFENCE *psMonitor3DFenceOUT);
- int ged_bridge_query_info(
- GED_BRIDGE_IN_QUERY_INFO *psQueryInfoINT,
- GED_BRIDGE_OUT_QUERY_INFO *psQueryInfoOUT);
- int ged_bridge_notify_vsync(
- GED_BRIDGE_IN_NOTIFY_VSYNC *psNotifyVsyncINT,
- GED_BRIDGE_OUT_NOTIFY_VSYNC *psNotifyVsyncOUT);
- int ged_bridge_dvfs_probe(
- GED_BRIDGE_IN_DVFS_PROBE *psDVFSProbeINT,
- GED_BRIDGE_OUT_DVFS_PROBE *psDVFSProbeOUT);
- int ged_bridge_dvfs_um_retrun(
- GED_BRIDGE_IN_DVFS_UM_RETURN *psDVFS_UM_returnINT,
- GED_BRIDGE_OUT_DVFS_UM_RETURN *psDVFS_UM_returnOUT);
- int ged_bridge_event_notify(
- GED_BRIDGE_IN_EVENT_NOTIFY *psEVENT_NOTIFYINT,
- GED_BRIDGE_OUT_EVENT_NOTIFY *psEVENT_NOTIFYOUT);
- #endif
|