| /* |
| * ARM GEM5 Multi-cluster platform's CPUFreq header file |
| * |
| * Copyright (C) 2013 - 2014 ARM Ltd. |
| * |
| * Authors: Akash Bagdia <Akash.bagdia@arm.com> |
| * Vasileios Spiliopoulos <vasileios.spiliopoulos@arm.com> |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License version 2 as |
| * published by the Free Software Foundation. |
| * |
| * This program is distributed "as is" WITHOUT ANY WARRANTY of any |
| * kind, whether express or implied; without even the implied warranty |
| * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU General Public License for more details. |
| */ |
| #ifndef CPUFREQ_ARM_GEM5_MC_H |
| #define CPUFREQ_ARM_GEM5_MC_H |
| |
| #include <linux/cpufreq.h> |
| #include <linux/device.h> |
| #include <linux/types.h> |
| |
| /* Currently we support n=32 clusters */ |
| #define MAX_CLUSTERS 32 |
| |
| struct cpufreq_arm_mc_ops { |
| char name[CPUFREQ_NAME_LEN]; |
| int (*get_transition_latency)(struct device *cpu_dev); |
| |
| /* |
| * This must set opp table for cpu_dev in a similar way as done by |
| * of_init_opp_table(). |
| */ |
| int (*init_opp_table)(struct device *cpu_dev); |
| }; |
| |
| static inline int cpu_to_cluster(int cpu) |
| { |
| return topology_physical_package_id(cpu); |
| } |
| |
| int mc_cpufreq_register(struct cpufreq_arm_mc_ops *ops); |
| void mc_cpufreq_unregister(struct cpufreq_arm_mc_ops *ops); |
| |
| #endif /* CPUFREQ_ARM_GEM5_MC_H */ |