samsung: emc: change real frequency check function.
authorYoungtae Lee <yt0729.lee@samsung.com>
Mon, 14 May 2018 02:08:23 +0000 (11:08 +0900)
committerlakkyung.jung <lakkyung.jung@samsung.com>
Mon, 23 Jul 2018 05:59:16 +0000 (14:59 +0900)
Use acme driver old frequency or real cmu value instead of policy->cur

Change-Id: Ide22cf698d0177bcebdba45d980886124ee3c74f
Signed-off-by: Youngtae Lee <yt0729.lee@samsung.com>
drivers/soc/samsung/exynos-emc.c
include/soc/samsung/exynos-emc.h

index 55ca20125f804245ca0092d76383058e40ee32f8..47ab39a08ce3d552f8c6ab646975e531f74f6ca2 100644 (file)
@@ -22,6 +22,7 @@
 #include <soc/samsung/exynos-cpuhp.h>
 #include <soc/samsung/cal-if.h>
 #include <soc/samsung/exynos-pmu.h>
+#include <soc/samsung/exynos-emc.h>
 #include <dt-bindings/soc/samsung/exynos-emc.h>
 
 #include <trace/events/power.h>
@@ -203,13 +204,11 @@ int emc_verify_constraints(struct cpumask *mask)
 {
        struct cpufreq_policy *policy;
        struct emc_mode *mode;
-       struct cpumask temp;
-       int cpu;
+       unsigned int cpu;
 
        /* find mode matched mask */
        mode = emc_find_mode(mask);
-       cpumask_and(&temp, &mode->boost_cpus, cpu_online_mask);
-       cpu = cpumask_first(&temp);
+       cpu = cpumask_first(&mode->boost_cpus);
 
        policy = cpufreq_cpu_get(cpu);
        if (!policy) {
@@ -224,15 +223,13 @@ int emc_verify_constraints(struct cpumask *mask)
                                mode->name, mode->max_freq, policy->max);
                return 0;
        }
+       cpufreq_cpu_put(policy);
 
 check_real_freq:
        /* check whether real cpu freq within max constraints or not */
-       if (cpufreq_get(cpu) >  mode->max_freq) {
-               panic("EMC(%s): real frequency is higher than max\n", __func__);
-               return 0;
-       }
-
-       cpufreq_cpu_put(policy);
+       if (exynos_cpufreq_get(cpu) > mode->max_freq)
+               panic("EMC(%s): real frequency(%d) is higher than max(%d)\n",
+                       __func__, exynos_cpufreq_get(cpu), mode->max_freq);
 
        return 1;
 }
index 15812fba3307d360680baee7234e681e6e76672d..a4b9a80bb8c3ea6ee93458533303f2ed503d507b 100644 (file)
@@ -24,5 +24,7 @@ static inline int emc_get_boost_freq(int cpu) { return 0; };
 static inline void emc_check_available_freq(struct cpumask *cpus, unsigned int target_freq) { return; };
 #endif
 
+unsigned int exynos_cpufreq_get(unsigned int cpu);
+
 #endif /* __EXYNOS_MODE_CHANGER_H */