| // SPDX-License-Identifier: GPL-2.0 | 
 | /* | 
 |  * Copyright (c) 2019 MediaTek Inc. | 
 |  */ | 
 |  | 
 | #include <linux/cpufreq.h> | 
 | #include <trace/events/power.h> | 
 |  | 
 | #include "power.h" | 
 | #include "met_drv.h" | 
 | #include "met_kernel_symbol.h" | 
 |  | 
 | noinline void cpu_frequency(unsigned int frequency, unsigned int cpu_id) | 
 | { | 
 | 	if (met_export_api_symbol->met_cpu_frequency) | 
 | 		met_export_api_symbol->met_cpu_frequency(frequency, cpu_id); | 
 | } | 
 |  | 
 | void force_power_log(int cpu) | 
 | { | 
 | 	struct cpufreq_policy *p; | 
 |  | 
 | 	if (cpu == POWER_LOG_ALL) { | 
 | 		for_each_possible_cpu(cpu) { | 
 | 			p = cpufreq_cpu_get(cpu); | 
 | 			if (p != NULL) { | 
 | 				cpu_frequency(p->cur, cpu); | 
 | 				cpufreq_cpu_put(p); | 
 | 			} else { | 
 | 				cpu_frequency(0, cpu); | 
 | 			} | 
 | 		} | 
 | 	} else { | 
 | 		p = cpufreq_cpu_get(cpu); | 
 | 		if (p != NULL) { | 
 | 			cpu_frequency(p->cur, cpu); | 
 | 			cpufreq_cpu_put(p); | 
 | 		} else { | 
 | 			cpu_frequency(0, cpu); | 
 | 		} | 
 | 	} | 
 | } | 
 |  | 
 | void force_power_log_val(unsigned int frequency, int cpu) | 
 | { | 
 | 	cpu_frequency(frequency, cpu); | 
 | } |