Message ID | 1630162872-25452-3-git-send-email-hector.yuan@mediatek.com (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | viresh kumar |
Headers | show |
Series | [v14,1/3] ndings: cpufreq: add bindings for MediaTek cpufreq HW | expand |
On 28-08-21, 23:01, Hector Yuan wrote: > From: "Hector.Yuan" <hector.yuan@mediatek.com> > > Add of_perf_domain_get_sharing_cpumask function to group cpu > to specific performance domain. > > Signed-off-by: Hector.Yuan <hector.yuan@mediatek.com> > --- > include/linux/cpufreq.h | 39 +++++++++++++++++++++++++++++++++++++++ > 1 file changed, 39 insertions(+) > > diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h > index 9fd7194..4916d70 100644 > --- a/include/linux/cpufreq.h > +++ b/include/linux/cpufreq.h > @@ -13,6 +13,8 @@ > #include <linux/completion.h> > #include <linux/kobject.h> > #include <linux/notifier.h> > +#include <linux/of.h> > +#include <linux/of_device.h> > #include <linux/pm_qos.h> > #include <linux/spinlock.h> > #include <linux/sysfs.h> > @@ -1036,6 +1038,43 @@ void arch_set_freq_scale(const struct cpumask *cpus, > } > #endif > > +#ifdef CONFIG_CPU_FREQ > +static inline int of_perf_domain_get_sharing_cpumask(int index, const char *list_name, > + const char *cell_name, > + struct cpumask *cpumask) What happened with the discussion we had about returning index and passing CPU there ?
On Mon, 2021-08-30 at 10:34 +0530, Viresh Kumar wrote: > On 28-08-21, 23:01, Hector Yuan wrote: > > From: "Hector.Yuan" <hector.yuan@mediatek.com> > > > > Add of_perf_domain_get_sharing_cpumask function to group cpu > > to specific performance domain. > > > > Signed-off-by: Hector.Yuan <hector.yuan@mediatek.com> > > --- > > include/linux/cpufreq.h | 39 > > +++++++++++++++++++++++++++++++++++++++ > > 1 file changed, 39 insertions(+) > > > > diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h > > index 9fd7194..4916d70 100644 > > --- a/include/linux/cpufreq.h > > +++ b/include/linux/cpufreq.h > > @@ -13,6 +13,8 @@ > > #include <linux/completion.h> > > #include <linux/kobject.h> > > #include <linux/notifier.h> > > +#include <linux/of.h> > > +#include <linux/of_device.h> > > #include <linux/pm_qos.h> > > #include <linux/spinlock.h> > > #include <linux/sysfs.h> > > @@ -1036,6 +1038,43 @@ void arch_set_freq_scale(const struct > > cpumask *cpus, > > } > > #endif > > > > +#ifdef CONFIG_CPU_FREQ > > +static inline int of_perf_domain_get_sharing_cpumask(int index, > > const char *list_name, > > + const char > > *cell_name, > > + struct cpumask > > *cpumask) > > What happened with the discussion we had about returning index and > passing CPU > there ? > Hi, Viresh, sorry for this, I didn't upload the correct version of cpufreq.h. Should I just go v15 or you want to do some review for other part of my patches? Thanks.
diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h index 9fd7194..4916d70 100644 --- a/include/linux/cpufreq.h +++ b/include/linux/cpufreq.h @@ -13,6 +13,8 @@ #include <linux/completion.h> #include <linux/kobject.h> #include <linux/notifier.h> +#include <linux/of.h> +#include <linux/of_device.h> #include <linux/pm_qos.h> #include <linux/spinlock.h> #include <linux/sysfs.h> @@ -1036,6 +1038,43 @@ void arch_set_freq_scale(const struct cpumask *cpus, } #endif +#ifdef CONFIG_CPU_FREQ +static inline int of_perf_domain_get_sharing_cpumask(int index, const char *list_name, + const char *cell_name, + struct cpumask *cpumask) +{ + struct device_node *cpu_np; + struct of_phandle_args args; + int cpu, ret; + + for_each_possible_cpu(cpu) { + cpu_np = of_cpu_device_node_get(cpu); + if (!cpu_np) + continue; + + ret = of_parse_phandle_with_args(cpu_np, list_name, + cell_name, 0, + &args); + + of_node_put(cpu_np); + if (ret < 0) + continue; + + if (index == args.args[0]) + cpumask_set_cpu(cpu, cpumask); + } + + return 0; +} +#else +static inline int of_perf_domain_get_sharing_cpumask(int index, const char *list_name, + const char *cell_name, + struct cpumask *cpumask) +{ + return 0; +} +#endif + /* the following are really really optional */ extern struct freq_attr cpufreq_freq_attr_scaling_available_freqs; extern struct freq_attr cpufreq_freq_attr_scaling_boost_freqs;