aboutsummaryrefslogtreecommitdiff
path: root/drivers/misc/mediatek/gpu/ged/include
diff options
context:
space:
mode:
authorMeizu OpenSource <patchwork@meizu.com>2016-08-15 10:19:42 +0800
committerMeizu OpenSource <patchwork@meizu.com>2016-08-15 10:19:42 +0800
commitd2e1446d81725c351dc73a03b397ce043fb18452 (patch)
tree4dbc616b7f92aea39cd697a9084205ddb805e344 /drivers/misc/mediatek/gpu/ged/include
downloadandroid_kernel_m2note-d2e1446d81725c351dc73a03b397ce043fb18452.tar.gz
first commit
Diffstat (limited to 'drivers/misc/mediatek/gpu/ged/include')
-rw-r--r--drivers/misc/mediatek/gpu/ged/include/config_kernel_eng.h1
-rw-r--r--drivers/misc/mediatek/gpu/ged/include/config_kernel_user.h0
-rw-r--r--drivers/misc/mediatek/gpu/ged/include/ged_base.h25
-rw-r--r--drivers/misc/mediatek/gpu/ged/include/ged_bridge.h162
-rw-r--r--drivers/misc/mediatek/gpu/ged/include/ged_debugFS.h36
-rw-r--r--drivers/misc/mediatek/gpu/ged/include/ged_error.h17
-rw-r--r--drivers/misc/mediatek/gpu/ged/include/ged_hal.h10
-rw-r--r--drivers/misc/mediatek/gpu/ged/include/ged_hashtable.h18
-rw-r--r--drivers/misc/mediatek/gpu/ged/include/ged_log.h60
-rw-r--r--drivers/misc/mediatek/gpu/ged/include/ged_monitor_3D_fence.h8
-rw-r--r--drivers/misc/mediatek/gpu/ged/include/ged_profile_dvfs.h32
-rw-r--r--drivers/misc/mediatek/gpu/ged/include/ged_type.h16
12 files changed, 385 insertions, 0 deletions
diff --git a/drivers/misc/mediatek/gpu/ged/include/config_kernel_eng.h b/drivers/misc/mediatek/gpu/ged/include/config_kernel_eng.h
new file mode 100644
index 000000000..5e446397f
--- /dev/null
+++ b/drivers/misc/mediatek/gpu/ged/include/config_kernel_eng.h
@@ -0,0 +1 @@
+#define GED_DEBUG
diff --git a/drivers/misc/mediatek/gpu/ged/include/config_kernel_user.h b/drivers/misc/mediatek/gpu/ged/include/config_kernel_user.h
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/drivers/misc/mediatek/gpu/ged/include/config_kernel_user.h
diff --git a/drivers/misc/mediatek/gpu/ged/include/ged_base.h b/drivers/misc/mediatek/gpu/ged/include/ged_base.h
new file mode 100644
index 000000000..1e4d1930d
--- /dev/null
+++ b/drivers/misc/mediatek/gpu/ged/include/ged_base.h
@@ -0,0 +1,25 @@
+#ifndef __GED_BASE_H__
+#define __GED_BASE_H__
+
+#include <linux/xlog.h>
+#include "ged_type.h"
+
+#ifdef GED_DEBUG
+#define GED_LOGI(...) xlog_printk(ANDROID_LOG_INFO, "GED", __VA_ARGS__)
+#else
+#define GED_LOGI(...)
+#endif
+#define GED_LOGE(...) xlog_printk(ANDROID_LOG_ERROR, "GED", __VA_ARGS__)
+#define GED_CONTAINER_OF(ptr, type, member) ((type *)( ((char *)ptr) - offsetof(type,member) ))
+
+unsigned long ged_copy_to_user(void __user *pvTo, const void *pvFrom, unsigned long ulBytes);
+
+unsigned long ged_copy_from_user(void *pvTo, const void __user *pvFrom, unsigned long ulBytes);
+
+void* ged_alloc(int i32Size);
+
+void ged_free(void* pvBuf, int i32Size);
+
+long ged_get_pid(void);
+
+#endif
diff --git a/drivers/misc/mediatek/gpu/ged/include/ged_bridge.h b/drivers/misc/mediatek/gpu/ged/include/ged_bridge.h
new file mode 100644
index 000000000..62a8e237a
--- /dev/null
+++ b/drivers/misc/mediatek/gpu/ged/include/ged_bridge.h
@@ -0,0 +1,162 @@
+#ifndef __GED_BRIDGE_H__
+#define __GED_BRIDGE_H__
+
+#include "ged_base.h"
+#include "ged_log.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_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)
+
+/*****************************************************************************
+ * 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 RECORDSWAPBUFFERS */
+typedef struct GED_BRIDGE_OUT_MONITOR3DFENCE_TAG
+{
+ GED_ERROR eError;
+} GED_BRIDGE_OUT_MONITOR3DFENCE;
+
+/*****************************************************************************
+ * 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);
+
+#endif
diff --git a/drivers/misc/mediatek/gpu/ged/include/ged_debugFS.h b/drivers/misc/mediatek/gpu/ged/include/ged_debugFS.h
new file mode 100644
index 000000000..c81600f64
--- /dev/null
+++ b/drivers/misc/mediatek/gpu/ged/include/ged_debugFS.h
@@ -0,0 +1,36 @@
+#ifndef __GED_DEBUG_FS_H__
+#define __GED_DEBUG_FS_H__
+
+#include <linux/seq_file.h>
+#include "ged_type.h"
+
+typedef ssize_t (GED_ENTRY_WRITE_FUNC)(
+ const char __user *pszBuffer,
+ size_t uiCount,
+ loff_t uiPosition,
+ void *pvData);
+
+GED_ERROR ged_debugFS_create_entry(
+ const char* pszName,
+ void* pvDir,
+ struct seq_operations* psReadOps,
+ GED_ENTRY_WRITE_FUNC* pfnWrite,
+ void* pvData,
+ struct dentry** ppsEntry);
+
+void ged_debugFS_remove_entry(
+ struct dentry *psEntry);
+
+GED_ERROR ged_debugFS_create_entry_dir(
+ const char* pszName,
+ struct dentry* psParentDir,
+ struct dentry** ppsDir);
+
+void ged_debugFS_remove_entry_dir(
+ struct dentry *psDir);
+
+GED_ERROR ged_debugFS_init(void);
+
+void ged_debugFS_exit(void);
+
+#endif
diff --git a/drivers/misc/mediatek/gpu/ged/include/ged_error.h b/drivers/misc/mediatek/gpu/ged/include/ged_error.h
new file mode 100644
index 000000000..b1c065037
--- /dev/null
+++ b/drivers/misc/mediatek/gpu/ged/include/ged_error.h
@@ -0,0 +1,17 @@
+#ifndef __GED_ERROR_H__
+#define __GED_ERROR_H__
+
+typedef enum GED_ERROR_TAG
+{
+ GED_OK,
+ GED_ERROR_FAIL,
+ GED_ERROR_OOM,
+ GED_ERROR_OUT_OF_FD,
+ GED_ERROR_FAIL_WITH_LIMIT,
+ GED_ERROR_TIMEOUT,
+ GED_ERROR_CMD_NOT_PROCESSED,
+ GED_ERROR_INVALID_PARAMS
+} GED_ERROR;
+
+
+#endif
diff --git a/drivers/misc/mediatek/gpu/ged/include/ged_hal.h b/drivers/misc/mediatek/gpu/ged/include/ged_hal.h
new file mode 100644
index 000000000..68605fa55
--- /dev/null
+++ b/drivers/misc/mediatek/gpu/ged/include/ged_hal.h
@@ -0,0 +1,10 @@
+#ifndef __GED_HAL_H__
+#define __GED_HAL_H__
+
+#include "ged_type.h"
+
+GED_ERROR ged_hal_init(void);
+
+void ged_hal_exit(void);
+
+#endif
diff --git a/drivers/misc/mediatek/gpu/ged/include/ged_hashtable.h b/drivers/misc/mediatek/gpu/ged/include/ged_hashtable.h
new file mode 100644
index 000000000..dd424b47f
--- /dev/null
+++ b/drivers/misc/mediatek/gpu/ged/include/ged_hashtable.h
@@ -0,0 +1,18 @@
+#ifndef __GED_HASH_TABLE_H__
+#define __GED_HASH_TABLE_H__
+
+typedef void* GED_HASHTABLE_HANDLE;
+
+GED_HASHTABLE_HANDLE ged_hashtable_create(unsigned int ui32Bits);
+
+void ged_hashtable_destroy(GED_HASHTABLE_HANDLE hHashTable);
+
+GED_ERROR ged_hashtable_insert(GED_HASHTABLE_HANDLE hHashTable, void* pvoid, unsigned int* pui32ID);
+
+void ged_hashtable_remove(GED_HASHTABLE_HANDLE hHashTable, unsigned int ui32ID);
+
+void* ged_hashtable_find(GED_HASHTABLE_HANDLE hHashTable, unsigned int ui32ID);
+
+GED_ERROR ged_hashtable_set(GED_HASHTABLE_HANDLE hHashTable, unsigned int ui32ID, void* pvoid);
+
+#endif
diff --git a/drivers/misc/mediatek/gpu/ged/include/ged_log.h b/drivers/misc/mediatek/gpu/ged/include/ged_log.h
new file mode 100644
index 000000000..66df2540f
--- /dev/null
+++ b/drivers/misc/mediatek/gpu/ged/include/ged_log.h
@@ -0,0 +1,60 @@
+#ifndef __GED_LOG_H__
+#define __GED_LOG_H__
+
+#include "ged_type.h"
+
+#if defined(__GNUC__)
+#define GED_LOG_BUF_FORMAT_PRINTF(x,y) __attribute__((format(printf,x,y)))
+#else
+#define GED_LOG_BUF_FORMAT_PRINTF(x,y)
+#endif
+
+#define GED_LOG_BUF_NAME_LENGTH 64
+#define GED_LOG_BUF_NODE_NAME_LENGTH 64
+
+typedef enum GED_LOG_BUF_TYPE_TAG
+{
+ GED_LOG_BUF_TYPE_RINGBUFFER,
+ GED_LOG_BUF_TYPE_QUEUEBUFFER,
+ GED_LOG_BUF_TYPE_QUEUEBUFFER_AUTO_INCREASE,
+} GED_LOG_BUF_TYPE;
+
+GED_LOG_BUF_HANDLE ged_log_buf_alloc(int i32MaxLineCount, int i32MaxBufferSizeByte, GED_LOG_BUF_TYPE eType, const char* pszName, const char* pszNodeName);
+
+GED_ERROR ged_log_buf_resize(GED_LOG_BUF_HANDLE hLogBuf, int i32NewMaxLineCount, int i32NewMaxBufferSizeByte);
+
+GED_ERROR ged_log_buf_ignore_lines(GED_LOG_BUF_HANDLE hLogBuf, int i32LineCount);
+
+GED_ERROR ged_log_buf_reset(GED_LOG_BUF_HANDLE hLogBuf);
+
+void ged_log_buf_free(GED_LOG_BUF_HANDLE hLogBuf);
+
+/* query by Name, return NULL if not found */
+GED_LOG_BUF_HANDLE ged_log_buf_get(const char* pszName);
+
+/* register a pointer, it will be set after the corresponding buffer is allcated. */
+int ged_log_buf_get_early(const char* pszName, GED_LOG_BUF_HANDLE *callback_set_handle);
+
+GED_ERROR ged_log_buf_print(GED_LOG_BUF_HANDLE hLogBuf, const char *fmt, ...) GED_LOG_BUF_FORMAT_PRINTF(2,3);
+
+enum
+{
+ /* bit 0~7 reserved for internal used */
+ GED_RESVERED = 0xFF,
+
+ /* log with a prefix kernel time */
+ GED_LOG_ATTR_TIME = 0x100,
+
+ /* log with a prefix user time, pid, tid */
+ GED_LOG_ATTR_TIME_TPT = 0x200,
+};
+
+GED_ERROR ged_log_buf_print2(GED_LOG_BUF_HANDLE hLogBuf, int i32LogAttrs, const char *fmt, ...) GED_LOG_BUF_FORMAT_PRINTF(3,4);
+
+GED_ERROR ged_log_system_init(void);
+
+void ged_log_system_exit(void);
+
+int ged_log_buf_write(GED_LOG_BUF_HANDLE hLogBuf, const char __user *pszBuffer, int i32Count);
+
+#endif
diff --git a/drivers/misc/mediatek/gpu/ged/include/ged_monitor_3D_fence.h b/drivers/misc/mediatek/gpu/ged/include/ged_monitor_3D_fence.h
new file mode 100644
index 000000000..ce22eefe9
--- /dev/null
+++ b/drivers/misc/mediatek/gpu/ged/include/ged_monitor_3D_fence.h
@@ -0,0 +1,8 @@
+#ifndef __GED_MONITOR_3D_FENCE_H__
+#define __GED_MONITOR_3D_FENCE_H__
+
+#include "ged_type.h"
+
+GED_ERROR ged_monitor_3D_fence_add(int fence_fd);
+
+#endif
diff --git a/drivers/misc/mediatek/gpu/ged/include/ged_profile_dvfs.h b/drivers/misc/mediatek/gpu/ged/include/ged_profile_dvfs.h
new file mode 100644
index 000000000..5437aea0b
--- /dev/null
+++ b/drivers/misc/mediatek/gpu/ged/include/ged_profile_dvfs.h
@@ -0,0 +1,32 @@
+#ifndef __GED_PROFILE_DVFS_H__
+#define __GED_PROFILE_DVFS_H__
+
+#include "ged_type.h"
+
+GED_ERROR ged_profile_dvfs_init(void);
+
+void ged_profile_dvfs_exit(void);
+
+GED_ERROR ged_profile_dvfs_enable(void);
+
+void ged_profile_dvfs_disable(void);
+
+void ged_profile_dvfs_start(void);
+
+void ged_profile_dvfs_stop(void);
+
+void ged_profile_dvfs_ignore_lines(int i32LineCount);
+
+void ged_profile_dvfs_record_freq_volt(unsigned int ui32Frequency, unsigned int ui32Voltage);
+
+void ged_profile_dvfs_record_temp(int i32Temp);
+
+void ged_profile_dvfs_record_thermal_limit(unsigned int ui32FreqLimit);
+
+void ged_profile_dvfs_record_gpu_loading(unsigned int ui32GpuLoading);
+
+void ged_profile_dvfs_record_clock_on(void);
+
+void ged_profile_dvfs_record_clock_off(void);
+
+#endif
diff --git a/drivers/misc/mediatek/gpu/ged/include/ged_type.h b/drivers/misc/mediatek/gpu/ged/include/ged_type.h
new file mode 100644
index 000000000..11dd19300
--- /dev/null
+++ b/drivers/misc/mediatek/gpu/ged/include/ged_type.h
@@ -0,0 +1,16 @@
+#ifndef __GED_TYPE_H__
+#define __GED_TYPE_H__
+
+#include "ged_error.h"
+
+typedef void* GED_HANDLE;
+
+typedef unsigned int GED_LOG_BUF_HANDLE;
+
+typedef enum GED_BOOL_TAG
+{
+ GED_FALSE,
+ GED_TRUE
+} GED_BOOL;
+
+#endif