return 0;
}
+void emc_check_available_freq(struct cpumask *cpus, unsigned int target_freq)
+{
+ unsigned int max_freq;
+ struct emc_domain *domain = emc_get_boost_domain();
+ int cpu = cpumask_first(cpus);
+ struct cpumask online_mask;
+ struct emc_mode *mode;
+
+ cpumask_copy(&online_mask, cpu_online_mask);
+ mode = emc_find_mode(&online_mask);
+
+ if (!cpumask_equal(cpus, &domain->cpus))
+ return;
+
+ if (mode)
+ max_freq = mode->max_freq;
+ else
+ max_freq = emc_get_base_mode()->max_freq;
+
+ if (target_freq > max_freq)
+ panic("cpu%d target_freq(%d) is higher than max_freq(%d, mode %s)\n",
+ cpu, target_freq, max_freq, mode->name);
+}
+
/* check policy->max constaints and real clock violation according to mask */
int emc_verify_constraints(struct cpumask *mask)
{
void exynos_emc_update(int cpu);
int exynos_emc_update_cpu_pwr(unsigned int cpu, bool on);
int emc_get_boost_freq(int cpu);
+void emc_check_available_freq(struct cpumask *cpus, unsigned int target_freq);
#else
static inline void exynos_emc_update(int cpu) {};
static inline int exynos_emc_update_cpu_pwr(unsigned int cpu, bool on) { return 0; };
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
#endif /* __EXYNOS_MODE_CHANGER_H */