| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653 |
- /*
- * 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.
- */
- #include <linux/kernel.h>
- #include <linux/module.h>
- #include <mt-plat/mtk_gpu_utility.h>
- #include "ged_monitor_3D_fence.h"
- unsigned int (*mtk_get_gpu_memory_usage_fp)(void) = NULL;
- EXPORT_SYMBOL(mtk_get_gpu_memory_usage_fp);
- bool mtk_get_gpu_memory_usage(unsigned int* pMemUsage)
- {
- if (NULL != mtk_get_gpu_memory_usage_fp)
- {
- if (pMemUsage)
- {
- *pMemUsage = mtk_get_gpu_memory_usage_fp();
- return true;
- }
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_get_gpu_memory_usage);
- unsigned int (*mtk_get_gpu_page_cache_fp)(void) = NULL;
- EXPORT_SYMBOL(mtk_get_gpu_page_cache_fp);
- bool mtk_get_gpu_page_cache(unsigned int* pPageCache)
- {
- if (NULL != mtk_get_gpu_page_cache_fp)
- {
- if (pPageCache)
- {
- *pPageCache = mtk_get_gpu_page_cache_fp();
- return true;
- }
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_get_gpu_page_cache);
- unsigned int (*mtk_get_gpu_loading_fp)(void) = NULL;
- EXPORT_SYMBOL(mtk_get_gpu_loading_fp);
- bool mtk_get_gpu_loading(unsigned int* pLoading)
- {
- if (NULL != mtk_get_gpu_loading_fp)
- {
- if (pLoading)
- {
- *pLoading = mtk_get_gpu_loading_fp();
- return true;
- }
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_get_gpu_loading);
- unsigned int (*mtk_get_gpu_block_fp)(void) = NULL;
- EXPORT_SYMBOL(mtk_get_gpu_block_fp);
- bool mtk_get_gpu_block(unsigned int* pBlock)
- {
- if (NULL != mtk_get_gpu_block_fp)
- {
- if (pBlock)
- {
- *pBlock = mtk_get_gpu_block_fp();
- return true;
- }
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_get_gpu_block);
- unsigned int (*mtk_get_gpu_idle_fp)(void) = NULL;
- EXPORT_SYMBOL(mtk_get_gpu_idle_fp);
- bool mtk_get_gpu_idle(unsigned int* pIdle)
- {
- if (NULL != mtk_get_gpu_idle_fp)
- {
- if (pIdle)
- {
- *pIdle = mtk_get_gpu_idle_fp();
- return true;
- }
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_get_gpu_idle);
- unsigned int (*mtk_get_gpu_freq_fp)(void) = NULL;
- EXPORT_SYMBOL(mtk_get_gpu_freq_fp);
- bool mtk_get_gpu_freq(unsigned int *pFreq)
- {
- if (NULL != mtk_get_gpu_freq_fp) {
- if (pFreq) {
- *pFreq = mtk_get_gpu_freq_fp();
- return true;
- }
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_get_gpu_freq);
- unsigned int (*mtk_get_gpu_GP_loading_fp)(void) = NULL;
- EXPORT_SYMBOL(mtk_get_gpu_GP_loading_fp);
- bool mtk_get_gpu_GP_loading(unsigned int* pLoading)
- {
- if (NULL != mtk_get_gpu_GP_loading_fp)
- {
- if (pLoading)
- {
- *pLoading = mtk_get_gpu_GP_loading_fp();
- return true;
- }
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_get_gpu_GP_loading);
- unsigned int (*mtk_get_gpu_PP_loading_fp)(void) = NULL;
- EXPORT_SYMBOL(mtk_get_gpu_PP_loading_fp);
- bool mtk_get_gpu_PP_loading(unsigned int* pLoading)
- {
- if (NULL != mtk_get_gpu_PP_loading_fp)
- {
- if (pLoading)
- {
- *pLoading = mtk_get_gpu_PP_loading_fp();
- return true;
- }
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_get_gpu_PP_loading);
- unsigned int (*mtk_get_gpu_power_loading_fp)(void) = NULL;
- EXPORT_SYMBOL(mtk_get_gpu_power_loading_fp);
- bool mtk_get_gpu_power_loading(unsigned int* pLoading)
- {
- if (NULL != mtk_get_gpu_power_loading_fp)
- {
- if (pLoading)
- {
- *pLoading = mtk_get_gpu_power_loading_fp();
- return true;
- }
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_get_gpu_power_loading);
- void (*mtk_enable_gpu_dvfs_timer_fp)(bool bEnable) = NULL;
- EXPORT_SYMBOL(mtk_enable_gpu_dvfs_timer_fp);
- bool mtk_enable_gpu_dvfs_timer(bool bEnable)
- {
- if (NULL != mtk_enable_gpu_dvfs_timer_fp)
- {
- mtk_enable_gpu_dvfs_timer_fp(bEnable);
- return true;
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_enable_gpu_dvfs_timer);
- void (*mtk_boost_gpu_freq_fp)(void) = NULL;
- EXPORT_SYMBOL(mtk_boost_gpu_freq_fp);
- bool mtk_boost_gpu_freq(void)
- {
- if (NULL != mtk_boost_gpu_freq_fp)
- {
- mtk_boost_gpu_freq_fp();
- return true;
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_boost_gpu_freq);
- void (*mtk_set_bottom_gpu_freq_fp)(unsigned int) = NULL;
- EXPORT_SYMBOL(mtk_set_bottom_gpu_freq_fp);
- bool mtk_set_bottom_gpu_freq(unsigned int ui32FreqLevel)
- {
- if (NULL != mtk_set_bottom_gpu_freq_fp)
- {
- mtk_set_bottom_gpu_freq_fp(ui32FreqLevel);
- return true;
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_set_bottom_gpu_freq);
- //-----------------------------------------------------------------------------
- unsigned int (*mtk_get_bottom_gpu_freq_fp)(void) = NULL;
- EXPORT_SYMBOL(mtk_get_bottom_gpu_freq_fp);
- bool mtk_get_bottom_gpu_freq(unsigned int *pui32FreqLevel)
- {
- if ((NULL != mtk_get_bottom_gpu_freq_fp) && (pui32FreqLevel))
- {
- *pui32FreqLevel = mtk_get_bottom_gpu_freq_fp();
- return true;
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_get_bottom_gpu_freq);
- //-----------------------------------------------------------------------------
- unsigned int (*mtk_custom_get_gpu_freq_level_count_fp)(void) = NULL;
- EXPORT_SYMBOL(mtk_custom_get_gpu_freq_level_count_fp);
- bool mtk_custom_get_gpu_freq_level_count(unsigned int* pui32FreqLevelCount)
- {
- if (NULL != mtk_custom_get_gpu_freq_level_count_fp)
- {
- if (pui32FreqLevelCount)
- {
- *pui32FreqLevelCount = mtk_custom_get_gpu_freq_level_count_fp();
- return true;
- }
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_custom_get_gpu_freq_level_count);
- //-----------------------------------------------------------------------------
- void (*mtk_custom_boost_gpu_freq_fp)(unsigned int ui32FreqLevel) = NULL;
- EXPORT_SYMBOL(mtk_custom_boost_gpu_freq_fp);
- bool mtk_custom_boost_gpu_freq(unsigned int ui32FreqLevel)
- {
- if (NULL != mtk_custom_boost_gpu_freq_fp)
- {
- mtk_custom_boost_gpu_freq_fp(ui32FreqLevel);
- return true;
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_custom_boost_gpu_freq);
- //-----------------------------------------------------------------------------
- void (*mtk_custom_upbound_gpu_freq_fp)(unsigned int ui32FreqLevel) = NULL;
- EXPORT_SYMBOL(mtk_custom_upbound_gpu_freq_fp);
- bool mtk_custom_upbound_gpu_freq(unsigned int ui32FreqLevel)
- {
- if (NULL != mtk_custom_upbound_gpu_freq_fp)
- {
- mtk_custom_upbound_gpu_freq_fp(ui32FreqLevel);
- return true;
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_custom_upbound_gpu_freq);
- //-----------------------------------------------------------------------------
- unsigned int (*mtk_get_custom_boost_gpu_freq_fp)(void) = NULL;
- EXPORT_SYMBOL(mtk_get_custom_boost_gpu_freq_fp);
- bool mtk_get_custom_boost_gpu_freq(unsigned int *pui32FreqLevel)
- {
- if ((NULL != mtk_get_custom_boost_gpu_freq_fp) && (NULL != pui32FreqLevel))
- {
- *pui32FreqLevel = mtk_get_custom_boost_gpu_freq_fp();
- return true;
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_get_custom_boost_gpu_freq);
- //-----------------------------------------------------------------------------
- unsigned int (*mtk_get_custom_upbound_gpu_freq_fp)(void) = NULL;
- EXPORT_SYMBOL(mtk_get_custom_upbound_gpu_freq_fp);
- bool mtk_get_custom_upbound_gpu_freq(unsigned int *pui32FreqLevel)
- {
- if ((NULL != mtk_get_custom_upbound_gpu_freq_fp) && (NULL != pui32FreqLevel))
- {
- *pui32FreqLevel = mtk_get_custom_upbound_gpu_freq_fp();
- return true;
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_get_custom_upbound_gpu_freq);
- //-----------------------------------------------------------------------------
- void (*mtk_do_gpu_dvfs_fp)(unsigned long t, long phase, unsigned long ul3DFenceDoneTime) = NULL;
- EXPORT_SYMBOL(mtk_do_gpu_dvfs_fp);
- bool mtk_do_gpu_dvfs(unsigned long t, long phase, unsigned long ul3DFenceDoneTime)
- {
- if (NULL != mtk_do_gpu_dvfs_fp)
- {
- mtk_do_gpu_dvfs_fp(t, phase, ul3DFenceDoneTime);
- return true;
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_do_gpu_dvfs);
- //-----------------------------------------------------------------------------
- void (*mtk_gpu_sodi_entry_fp)(void) = NULL;
- EXPORT_SYMBOL(mtk_gpu_sodi_entry_fp);
- bool mtk_gpu_sodi_entry(void)
- {
- if (NULL != mtk_gpu_sodi_entry_fp)
- {
- mtk_gpu_sodi_entry_fp();
- return true;
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_gpu_sodi_entry);
- //-----------------------------------------------------------------------------
- void (*mtk_gpu_sodi_exit_fp)(void) = NULL;
- EXPORT_SYMBOL(mtk_gpu_sodi_exit_fp);
- bool mtk_gpu_sodi_exit(void)
- {
- if (NULL != mtk_gpu_sodi_exit_fp)
- {
- mtk_gpu_sodi_exit_fp();
- return true;
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_gpu_sodi_exit);
- //-----------------------------------------------------------------------------
- unsigned int (*mtk_get_sw_vsync_phase_fp)(void) = NULL;
- EXPORT_SYMBOL(mtk_get_sw_vsync_phase_fp);
- bool mtk_get_sw_vsync_phase(long* plPhase)
- {
- if (NULL != mtk_get_sw_vsync_phase_fp)
- {
- if (plPhase)
- {
- *plPhase = mtk_get_sw_vsync_phase_fp();
- return true;
- }
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_get_sw_vsync_phase);
- //-----------------------------------------------------------------------------
- unsigned int (*mtk_get_sw_vsync_time_fp)(void) = NULL;
- EXPORT_SYMBOL(mtk_get_sw_vsync_time_fp);
- bool mtk_get_sw_vsync_time(unsigned long* pulTime)
- {
- if (NULL != mtk_get_sw_vsync_time_fp)
- {
- if (pulTime)
- {
- *pulTime = mtk_get_sw_vsync_time_fp();
- return true;
- }
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_get_sw_vsync_time);
- //-----------------------------------------------------------------------------
- unsigned int (*mtk_get_gpu_fence_done_fp)(void) = NULL;
- EXPORT_SYMBOL(mtk_get_gpu_fence_done_fp);
- bool mtk_get_gpu_fence_done(unsigned long* pulTime)
- {
- if (NULL != mtk_get_gpu_fence_done_fp)
- {
- if (pulTime)
- {
- *pulTime = mtk_get_gpu_fence_done_fp();
- return true;
- }
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_get_gpu_fence_done);
- //-----------------------------------------------------------------------------
- void (*mtk_gpu_dvfs_set_mode_fp)(int eMode) = NULL;
- EXPORT_SYMBOL(mtk_gpu_dvfs_set_mode_fp);
- bool mtk_gpu_dvfs_set_mode(int eMode)
- {
- if (NULL != mtk_gpu_dvfs_set_mode_fp)
- {
- mtk_gpu_dvfs_set_mode_fp(eMode);
- return true;
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_gpu_dvfs_set_mode);
- //-----------------------------------------------------------------------------
- void (*mtk_dump_gpu_memory_usage_fp)(void) = NULL;
- EXPORT_SYMBOL(mtk_dump_gpu_memory_usage_fp);
- bool mtk_dump_gpu_memory_usage(void)
- {
- if (NULL != mtk_dump_gpu_memory_usage_fp)
- {
- mtk_dump_gpu_memory_usage_fp();
- return true;
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_dump_gpu_memory_usage);
- //-----------------------------------------------------------------------------
- int (*mtk_get_gpu_power_state_fp)(void) =NULL;
- EXPORT_SYMBOL(mtk_get_gpu_power_state_fp);
- int mtk_get_gpu_power_state(void)
- {
- if (NULL != mtk_get_gpu_power_state_fp)
- {
- return mtk_get_gpu_power_state_fp();
- }
- return -1;
- }
- EXPORT_SYMBOL(mtk_get_gpu_power_state);
- //-----------------------------------------------------------------------------
- void (*mtk_gpu_dvfs_clock_switch_fp)(bool bSwitch) =NULL;
- EXPORT_SYMBOL(mtk_gpu_dvfs_clock_switch_fp);
- bool mtk_gpu_dvfs_clock_switch(bool bSwitch)
- {
- if (NULL != mtk_gpu_dvfs_clock_switch_fp)
- {
- mtk_gpu_dvfs_clock_switch_fp(bSwitch);
- return true;
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_gpu_dvfs_clock_switch);
- //-----------------------------------------------------------------------------
- void (*mtk_get_gpu_dvfs_from_fp)(MTK_GPU_DVFS_TYPE* peType, unsigned long *pulFreq) = NULL;
- EXPORT_SYMBOL(mtk_get_gpu_dvfs_from_fp);
- bool mtk_get_gpu_dvfs_from(MTK_GPU_DVFS_TYPE* peType, unsigned long *pulFreq)
- {
- if (NULL != mtk_get_gpu_dvfs_from_fp)
- {
- if (peType && pulFreq)
- {
- mtk_get_gpu_dvfs_from_fp(peType, pulFreq);
- return true;
- }
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_get_gpu_dvfs_from);
- //-----------------------------------------------------------------------------
- bool mtk_get_3D_fences_count(int* pi32Count)
- {
- if (pi32Count)
- {
- *pi32Count = ged_monitor_3D_fence_get_count();
- return true;
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_get_3D_fences_count);
- //-----------------------------------------------------------------------------
- unsigned long (*mtk_get_vsync_based_target_freq_fp)(void) = NULL;
- EXPORT_SYMBOL(mtk_get_vsync_based_target_freq_fp);
- bool mtk_get_vsync_based_target_freq(unsigned long *pulFreq)
- {
- if (NULL != mtk_get_vsync_based_target_freq_fp)
- {
- if (pulFreq)
- {
- *pulFreq = mtk_get_vsync_based_target_freq_fp();
- return true;
- }
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_get_vsync_based_target_freq);
- //-----------------------------------------------------------------------------
- unsigned int (*mtk_get_gpu_sub_loading_fp)(void) = NULL;
- EXPORT_SYMBOL(mtk_get_gpu_sub_loading_fp);
- bool mtk_get_gpu_sub_loading(unsigned int* pLoading)
- {
- if (NULL != mtk_get_gpu_sub_loading_fp)
- {
- if (pLoading)
- {
- *pLoading = mtk_get_gpu_sub_loading_fp();
- return true;
- }
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_get_gpu_sub_loading);
- //-----------------------------------------------------------------------------
- unsigned long (*mtk_get_gpu_bottom_freq_fp)(void) = NULL;
- EXPORT_SYMBOL(mtk_get_gpu_bottom_freq_fp);
- bool mtk_get_gpu_bottom_freq(unsigned long *pulFreq)
- {
- if (NULL != mtk_get_gpu_bottom_freq_fp)
- {
- if (pulFreq)
- {
- *pulFreq = mtk_get_gpu_bottom_freq_fp();
- return true;
- }
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_get_gpu_bottom_freq);
- //-----------------------------------------------------------------------------
- unsigned long (*mtk_get_gpu_custom_boost_freq_fp)(void) = NULL;
- EXPORT_SYMBOL(mtk_get_gpu_custom_boost_freq_fp);
- bool mtk_get_gpu_custom_boost_freq(unsigned long* pulFreq)
- {
- if (NULL != mtk_get_gpu_custom_boost_freq_fp)
- {
- if (pulFreq)
- {
- *pulFreq = mtk_get_gpu_custom_boost_freq_fp();
- return true;
- }
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_get_gpu_custom_boost_freq);
- //-----------------------------------------------------------------------------
- unsigned long (*mtk_get_gpu_custom_upbound_freq_fp)(void) = NULL;
- EXPORT_SYMBOL(mtk_get_gpu_custom_upbound_freq_fp);
- bool mtk_get_gpu_custom_upbound_freq(unsigned long* pulFreq)
- {
- if (NULL != mtk_get_gpu_custom_upbound_freq_fp)
- {
- if (pulFreq)
- {
- *pulFreq = mtk_get_gpu_custom_upbound_freq_fp();
- return true;
- }
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_get_gpu_custom_upbound_freq);
- //-----------------------------------------------------------------------------
- unsigned int (*mtk_get_vsync_offset_event_status_fp)(void) = NULL;
- EXPORT_SYMBOL(mtk_get_vsync_offset_event_status_fp);
- bool mtk_get_vsync_offset_event_status(unsigned int* pui32EventStatus)
- {
- if (NULL != mtk_get_vsync_offset_event_status_fp)
- {
- if (pui32EventStatus)
- {
- *pui32EventStatus = mtk_get_vsync_offset_event_status_fp();
- return true;
- }
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_get_vsync_offset_event_status);
- //-----------------------------------------------------------------------------
- unsigned int (*mtk_get_vsync_offset_debug_status_fp)(void) = NULL;
- EXPORT_SYMBOL(mtk_get_vsync_offset_debug_status_fp);
- bool mtk_get_vsync_offset_debug_status(unsigned int* pui32DebugStatus)
- {
- if (NULL != mtk_get_vsync_offset_debug_status_fp)
- {
- if (pui32DebugStatus)
- {
- *pui32DebugStatus = mtk_get_vsync_offset_debug_status_fp();
- return true;
- }
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_get_vsync_offset_debug_status);
- //-----------------------------------------------------------------------------
- void (*mtk_report_3D_fence_count_fp)(int i32Count) = NULL;
- EXPORT_SYMBOL(mtk_report_3D_fence_count_fp);
- bool mtk_report_3D_fence_count(int i32Count)
- {
- if (NULL != mtk_report_3D_fence_count_fp)
- {
- mtk_report_3D_fence_count_fp(i32Count);
- return true;
- }
- return false;
- }
- EXPORT_SYMBOL(mtk_report_3D_fence_count);
|