diff options
author | Clément G <geecko.dev@free.fr> | 2013-08-16 18:30:12 +0200 |
---|---|---|
committer | Clément G <geecko.dev@free.fr> | 2013-08-16 18:30:12 +0200 |
commit | 6949ff4f15359fe04f7dc6ada6e07c6582fc9846 (patch) | |
tree | 146a44e8a27d30800d37d4122eb1378ebabe5cfe /drivers/media/video | |
parent | ac24bebb064fa1d51829b62b2b7fbecdaf11c0d0 (diff) | |
download | kernel_samsung_smdk4412-6949ff4f15359fe04f7dc6ada6e07c6582fc9846.zip kernel_samsung_smdk4412-6949ff4f15359fe04f7dc6ada6e07c6582fc9846.tar.gz kernel_samsung_smdk4412-6949ff4f15359fe04f7dc6ada6e07c6582fc9846.tar.bz2 |
mali: pick the right GPU voltage table for 1400MHz devices, restore
thresholds
8-level table was always used, resulting in increased voltages for
1400MHz devices. Now, the right table (5-level) can be picked at
runtime.
Restore the thresholds to stock value for more stable frequencies.
Change-Id: I29900535c15557e75c72793b7169771982fce7f9
Diffstat (limited to 'drivers/media/video')
-rw-r--r-- | drivers/media/video/samsung/mali/platform/orion-m400/mali_platform_dvfs.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/media/video/samsung/mali/platform/orion-m400/mali_platform_dvfs.c b/drivers/media/video/samsung/mali/platform/orion-m400/mali_platform_dvfs.c index 3bf6805..98a8852 100644 --- a/drivers/media/video/samsung/mali/platform/orion-m400/mali_platform_dvfs.c +++ b/drivers/media/video/samsung/mali/platform/orion-m400/mali_platform_dvfs.c @@ -67,8 +67,8 @@ mali_dvfs_staycount_table mali_dvfs_staycount[MALI_DVFS_STEPS]={ /*dvfs threshold*/ mali_dvfs_threshold_table mali_dvfs_threshold[MALI_DVFS_STEPS]={ /*step 0*/{((int)((255*0)/100)) ,((int)((255*85)/100))}, - /*step 1*/{((int)((255*80)/100)) ,((int)((255*90)/100))}, - /*step 2*/{((int)((255*80)/100)) ,((int)((255*100)/100))} }; + /*step 1*/{((int)((255*75)/100)) ,((int)((255*85)/100))}, + /*step 2*/{((int)((255*75)/100)) ,((int)((255*100)/100))} }; /*dvfs status*/ mali_dvfs_currentstatus maliDvfsStatus; @@ -84,7 +84,6 @@ mali_dvfs_table mali_dvfs[MALI_DVFS_STEPS]={ #define ASV_8_LEVEL 8 #define ASV_5_LEVEL 5 -#define ASV_LEVEL_SUPPORT 0 static unsigned int asv_3d_volt_5_table[ASV_5_LEVEL][MALI_DVFS_STEPS] = { /* L3 (100MHz) L2(160MHz), L1(267MHz) */ @@ -269,16 +268,18 @@ static unsigned int decideNextStatus(unsigned int utilization) static mali_bool mali_dvfs_table_update(void) { unsigned int exynos_result_of_asv_group; + unsigned int target_asv; unsigned int i; exynos_result_of_asv_group = exynos_result_of_asv & 0xf; - MALI_PRINT(("exynos_result_of_asv_group = 0x%x\n", exynos_result_of_asv_group)); + target_asv = exynos_result_of_asv >> 28; + MALI_PRINT(("exynos_result_of_asv_group = 0x%x, target_asv = 0x%x\n", exynos_result_of_asv_group, target_asv)); - if (ASV_LEVEL_SUPPORT) { //asv level information will be added. + if (target_asv == 0x8) { //SUPPORT_1400MHZ for (i = 0; i < MALI_DVFS_STEPS; i++) { mali_dvfs[i].vol = asv_3d_volt_5_table[exynos_result_of_asv_group][i]; MALI_PRINT(("mali_dvfs[%d].vol = %d\n", i, mali_dvfs[i].vol)); } - } else { + } else if (target_asv == 0x4){ //SUPPORT_1200MHZ for (i = 0; i < MALI_DVFS_STEPS; i++) { mali_dvfs[i].vol = asv_3d_volt_8_table[exynos_result_of_asv_group][i]; MALI_PRINT(("mali_dvfs[%d].vol = %d\n", i, mali_dvfs[i].vol)); |