static struct dvfs_node *clk_cpu_dvfs_node[RK_MAX_CLUSTERS];
static struct dvfs_node *clk_gpu_dvfs_node;
static struct dvfs_node *clk_ddr_dvfs_node;
-static u32 cluster_policy_cpu[RK_MAX_CLUSTERS];
static unsigned int big_little = 1;
+static struct cpumask *cluster_policy_mask[RK_MAX_CLUSTERS];
/*******************************************************/
static inline int cpu_to_cluster(int cpu)
int ret;
struct cpufreq_freqs freqs;
struct cpufreq_policy *policy;
- u32 cur_cluster;
+ u32 cur_cluster, cpu;
cur_cluster = clk_node_get_cluster_id(clk);
- policy = cpufreq_cpu_get(cluster_policy_cpu[cur_cluster]);
+ cpu = cpumask_first_and(cluster_policy_mask[cur_cluster],
+ cpu_online_mask);
+ policy = cpufreq_cpu_get(cpu);
if (!policy)
return 0;
if (cpu0_err)
return cpu0_err;
- cluster_policy_cpu[cur_cluster] = policy->cpu;
+ cluster_policy_mask[cur_cluster] = policy->cpus;
/* set freq min max */
cpufreq_frequency_table_cpuinfo(policy, freq_table[cur_cluster]);
{
int ret = NOTIFY_DONE;
int i;
+ struct cpufreq_policy *policy;
+ u32 cpu;
for (i = 0; i < RK_MAX_CLUSTERS; i++) {
- struct cpufreq_policy *policy =
- cpufreq_cpu_get(cluster_policy_cpu[i]);
-
+ cpu = cpumask_first_and(cluster_policy_mask[i],
+ cpu_online_mask);
+ policy = cpufreq_cpu_get(cpu);
if (!policy)
return ret;