edit confix
authorKasin Lee <kasin.li@amlogic.com>
Sat, 14 Sep 2013 18:14:31 +0000 (02:14 +0800)
committerKasin Lee <kasin.li@amlogic.com>
Sat, 14 Sep 2013 18:14:31 +0000 (02:14 +0800)
1  2 
mali/platform/meson8/mali_scaling.c
mali/platform/meson8/mali_scaling.h
mali/platform/meson8/meson_main.c

index cc8abd7b7b4b9e27046fa3a39d7d75610157878d,d8fcec8da419af492c54bb6c6c5e6605655382e4..3c56713fdb3489ddb57d80c99dac04ef883b3efe
   * @file arm_core_scaling.c
   * Example core scaling policy.
   */
- #include "mali_scaling.h"
+ #include <linux/workqueue.h>
  #include <linux/mali/mali_utgard.h>
  #include "mali_kernel_common.h"
- #include <linux/workqueue.h>
+ #include "mali_scaling.h"
 +
  #include "mali_clock.h"
  
  static int num_cores_total;
@@@ -37,13 -34,30 +35,29 @@@ unsigned int mali_dvfs_clk[] = 
                  FCLK_DEV4 | 0,     /* 637.5 Mhz */
  };
  
- mali_dvfs_threshold_table mali_dvfs_threshold[]={
-         { 0               , 43 * 256 / 100 }, 
-         { 40 * 256 / 100, 53 * 256 / 100 },
-         { 50 * 256 / 100, 92 * 256 / 100 },
-         { 87 * 256 / 100, 256                  } 
+ static mali_dvfs_threshold_table mali_dvfs_threshold[]={
+         { 0                             , (43 * 256) / 100.0 + 0.5}, 
+         { (40 * 256) / 100.0 + 0.5, (53 * 256) / 100.0 + 0.5},
+         { (50 * 256) / 100.0 + 0.5, (92 * 256) / 100.0 + 0.5},
+         { (87 * 256) / 100.0 + 0.5, 256                        } 
+ };
+ enum mali_pp_scale_threshold_t {
+       MALI_PP_THRESHOLD_40,
+       MALI_PP_THRESHOLD_50,
+       MALI_PP_THRESHOLD_90,
+       MALI_PP_THRESHOLD_MAX,
  };
+ static u32 mali_pp_scale_threshold [] = {
+       (40 * 256) / 100.0 + 0.5,
+       (50 * 256) / 100.0 + 0.5,
+       (90 * 256) / 100.0 + 0.5,
+ };
+ static int mali_utilization_low = (256 * 30) / 100.0 + 0.5;
+ static int mali_utilization_mid = (256 * 60) / 100.0 + 0.5;
+ static int mali_utilization_high = (256 * 80) / 100.0 + 0.5;
  
 -
  static void do_scaling(struct work_struct *work)
  {
        int err = mali_perf_set_num_pp_cores(num_cores_enabled);
index 69112546c47dbdab55588656f32eecd40839b52d,e153bfdead974e7671c45e193a7a4dc8e1d78a0a..ea0e17a49c93318cdf4f7cd0fa3786d1f6994ef2
@@@ -37,6 -39,8 +39,9 @@@ void mali_core_scaling_term(void)
   *
   * @param data Utilization data.
   */
- void mali_scaling_update(struct mali_gpu_utilization_data *data);
 +
+ extern void mali_pp_fs_scaling_update(struct mali_gpu_utilization_data *data);
+ extern void mali_pp_scaling_update(struct mali_gpu_utilization_data *data);
+ extern void mali_fs_scaling_update(struct mali_gpu_utilization_data *data);
+ extern void reset_mali_scaling_stat(void);
  #endif /* __ARM_CORE_SCALING_H__ */
index 7b9c306213535f952805e91f7cc3be752d6eb4c8,a49b9da2fb0032d5447999c45b66ee2c6a0c3cb2..ae973c87c149b8551ec9f0718e096f24fb4589bb
@@@ -140,7 -154,8 +156,10 @@@ int mali_platform_device_register(void
  
                                MALI_DEBUG_ASSERT(0 < num_pp_cores);
                                mali_core_scaling_init(num_pp_cores, mali_default_clock_step);
 +
+                               last_scaling_mode = scaling_mode;
++
                                return 0;
                        }
                }