gpu: midgard: mali_kbase_pm_metrics.c init hrtimer once, fix resume bug
author黄涛 <huangtao@rock-chips.com>
Wed, 9 Apr 2014 13:34:12 +0000 (21:34 +0800)
committer黄涛 <huangtao@rock-chips.com>
Wed, 9 Apr 2014 13:34:12 +0000 (21:34 +0800)
drivers/gpu/arm/midgard/mali_kbase_pm_metrics.c

index 50450ed6dc3aac776acf33f2e1a76e01960ff6f1..191fd33d4117adcdfae94002f4693fd045aa9370 100755 (executable)
@@ -62,6 +62,8 @@ static enum hrtimer_restart dvfs_callback(struct hrtimer *timer)
 
 mali_error kbasep_pm_metrics_init(kbase_device *kbdev)
 {
+       static bool timer_inited = false;
+
        KBASE_DEBUG_ASSERT(kbdev != NULL);
 
        kbdev->pm.metrics.kbdev = kbdev;
@@ -76,7 +78,10 @@ mali_error kbasep_pm_metrics_init(kbase_device *kbdev)
 
        spin_lock_init(&kbdev->pm.metrics.lock);
 
-       hrtimer_init(&kbdev->pm.metrics.timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
+       if (!timer_inited) {
+               hrtimer_init(&kbdev->pm.metrics.timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
+               timer_inited = true;
+       }
        kbdev->pm.metrics.timer.function = dvfs_callback;
 
        hrtimer_start(&kbdev->pm.metrics.timer, HR_TIMER_DELAY_MSEC(kbdev->pm.platform_dvfs_frequency), HRTIMER_MODE_REL);