diff options
| author | Meizu OpenSource <patchwork@meizu.com> | 2016-08-15 10:19:42 +0800 |
|---|---|---|
| committer | Meizu OpenSource <patchwork@meizu.com> | 2016-08-15 10:19:42 +0800 |
| commit | d2e1446d81725c351dc73a03b397ce043fb18452 (patch) | |
| tree | 4dbc616b7f92aea39cd697a9084205ddb805e344 /drivers/misc/mediatek/gpu/ged/include | |
| download | android_kernel_m2note-d2e1446d81725c351dc73a03b397ce043fb18452.tar.gz | |
first commit
Diffstat (limited to 'drivers/misc/mediatek/gpu/ged/include')
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 |
