Messages in this thread | | | From | Peng Fan <> | Subject | RE: [PATCH v2 10/14] cpufreq: dt: Allow platform specific intermediate callbacks | Date | Wed, 19 Feb 2020 09:41:53 +0000 |
| |
Hi Viresh,
> Subject: Re: [PATCH v2 10/14] cpufreq: dt: Allow platform specific > intermediate callbacks > > On 19-02-20, 15:59, peng.fan@nxp.com wrote: > > From: Peng Fan <peng.fan@nxp.com> > > > > Platforms may need to implement platform specific get_intermediate and > > target_intermediate hooks. > > > > Update cpufreq-dt driver's platform data to contain those for such > > platforms. > > > > Signed-off-by: Peng Fan <peng.fan@nxp.com> > > --- > > drivers/cpufreq/cpufreq-dt.c | 4 ++++ drivers/cpufreq/cpufreq-dt.h | > > 4 ++++ > > 2 files changed, 8 insertions(+) > > > > diff --git a/drivers/cpufreq/cpufreq-dt.c > > b/drivers/cpufreq/cpufreq-dt.c index d2b5f062a07b..26fe8dfb9ce6 100644 > > --- a/drivers/cpufreq/cpufreq-dt.c > > +++ b/drivers/cpufreq/cpufreq-dt.c > > @@ -363,6 +363,10 @@ static int dt_cpufreq_probe(struct platform_device > *pdev) > > dt_cpufreq_driver.resume = data->resume; > > if (data->suspend) > > dt_cpufreq_driver.suspend = data->suspend; > > + if (data->get_intermediate) { > > + dt_cpufreq_driver.target_intermediate = > data->target_intermediate; > > + dt_cpufreq_driver.get_intermediate = data->get_intermediate; > > + } > > } > > > > ret = cpufreq_register_driver(&dt_cpufreq_driver); > > diff --git a/drivers/cpufreq/cpufreq-dt.h > > b/drivers/cpufreq/cpufreq-dt.h index a5a45b547d0b..28c8af7ec5ef 100644 > > --- a/drivers/cpufreq/cpufreq-dt.h > > +++ b/drivers/cpufreq/cpufreq-dt.h > > @@ -14,6 +14,10 @@ struct cpufreq_policy; struct > > cpufreq_dt_platform_data { > > bool have_governor_per_policy; > > > > + unsigned int (*get_intermediate)(struct cpufreq_policy *policy, > > + unsigned int index); > > + int (*target_intermediate)(struct cpufreq_policy *policy, > > + unsigned int index); > > Who calls them ?
In drivers/cpufreq/cpufreq.c, function __target_index. Line 2065, see below:
2062 notify = !(cpufreq_driver->flags & CPUFREQ_ASYNC_NOTIFICATION); 2063 if (notify) { 2064 /* Handle switching to intermediate frequency */ 2065 if (cpufreq_driver->get_intermediate) { 2066 retval = __target_intermediate(policy, &freqs, index); 2067 if (retval) 2068 return retval; 2069 2070 intermediate_freq = freqs.new; 2071 /* Set old freq to intermediate */ 2072 if (intermediate_freq) 2073 freqs.old = freqs.new; 2074 }
Inspired from tegra20-cpufreq.c, use target_intermediate could handle i.MX7ULP cpufreq easier.
Thanks, Peng.
> > -- > viresh
| |