Commit e336baa4 authored by Ulf Hansson's avatar Ulf Hansson Committed by Sudeep Holla

cpufreq: scmi: Prepare to move OF parsing of domain-id to cpufreq

The OF parsing of the clock domain specifier seems to better belong in the
scmi cpufreq driver, rather than being implemented behind the generic
->device_domain_id() perf protocol ops.

To prepare to remove the ->device_domain_id() ops, let's implement the OF
parsing in the scmi cpufreq driver instead.
Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
Link: https://lore.kernel.org/r/20230825112633.236607-4-ulf.hansson@linaro.orgSigned-off-by: default avatarSudeep Holla <sudeep.holla@arm.com>
parent 3d99ed60
...@@ -70,13 +70,24 @@ static unsigned int scmi_cpufreq_fast_switch(struct cpufreq_policy *policy, ...@@ -70,13 +70,24 @@ static unsigned int scmi_cpufreq_fast_switch(struct cpufreq_policy *policy,
return 0; return 0;
} }
static int scmi_cpu_domain_id(struct device *cpu_dev)
{
struct of_phandle_args clkspec;
if (of_parse_phandle_with_args(cpu_dev->of_node, "clocks",
"#clock-cells", 0, &clkspec))
return -EINVAL;
return clkspec.args[0];
}
static int static int
scmi_get_sharing_cpus(struct device *cpu_dev, struct cpumask *cpumask) scmi_get_sharing_cpus(struct device *cpu_dev, struct cpumask *cpumask)
{ {
int cpu, domain, tdomain; int cpu, domain, tdomain;
struct device *tcpu_dev; struct device *tcpu_dev;
domain = perf_ops->device_domain_id(cpu_dev); domain = scmi_cpu_domain_id(cpu_dev);
if (domain < 0) if (domain < 0)
return domain; return domain;
...@@ -88,7 +99,7 @@ scmi_get_sharing_cpus(struct device *cpu_dev, struct cpumask *cpumask) ...@@ -88,7 +99,7 @@ scmi_get_sharing_cpus(struct device *cpu_dev, struct cpumask *cpumask)
if (!tcpu_dev) if (!tcpu_dev)
continue; continue;
tdomain = perf_ops->device_domain_id(tcpu_dev); tdomain = scmi_cpu_domain_id(tcpu_dev);
if (tdomain == domain) if (tdomain == domain)
cpumask_set_cpu(cpu, cpumask); cpumask_set_cpu(cpu, cpumask);
} }
...@@ -104,7 +115,7 @@ scmi_get_cpu_power(struct device *cpu_dev, unsigned long *power, ...@@ -104,7 +115,7 @@ scmi_get_cpu_power(struct device *cpu_dev, unsigned long *power,
unsigned long Hz; unsigned long Hz;
int ret, domain; int ret, domain;
domain = perf_ops->device_domain_id(cpu_dev); domain = scmi_cpu_domain_id(cpu_dev);
if (domain < 0) if (domain < 0)
return domain; return domain;
...@@ -209,7 +220,7 @@ static int scmi_cpufreq_init(struct cpufreq_policy *policy) ...@@ -209,7 +220,7 @@ static int scmi_cpufreq_init(struct cpufreq_policy *policy)
} }
priv->cpu_dev = cpu_dev; priv->cpu_dev = cpu_dev;
priv->domain_id = perf_ops->device_domain_id(cpu_dev); priv->domain_id = scmi_cpu_domain_id(cpu_dev);
policy->driver_data = priv; policy->driver_data = priv;
policy->freq_table = freq_table; policy->freq_table = freq_table;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment