[PATCH V2 07/15] cpufreq: mediatek: Add opp notification for SVS support
Rex-BC Chen
rex-bc.chen at mediatek.com
Mon Apr 11 04:31:29 PDT 2022
On Fri, 2022-04-08 at 15:36 +0200, AngeloGioacchino Del Regno wrote:
> Il 08/04/22 06:59, Rex-BC Chen ha scritto:
> > From: "Andrew-sh.Cheng" <andrew-sh.cheng at mediatek.com>
> >
> > The Smart Voltage Scaling (SVS) is a hardware which calculates
> > suitable
> > SVS bank voltages to OPP voltage table.
> >
> > When the SVS is enabled, cpufreq should listen to opp notification
> > and do
> > proper actions when receiving events of disable and voltage
> > adjustment.
> >
> > Signed-off-by: Andrew-sh.Cheng <andrew-sh.cheng at mediatek.com>
> > Signed-off-by: Jia-Wei Chang <jia-wei.chang at mediatek.com>
> > Signed-off-by: Rex-BC Chen <rex-bc.chen at mediatek.com>
> > ---
> > drivers/cpufreq/mediatek-cpufreq.c | 90
> > +++++++++++++++++++++++++++---
> > 1 file changed, 82 insertions(+), 8 deletions(-)
> >
> > diff --git a/drivers/cpufreq/mediatek-cpufreq.c
> > b/drivers/cpufreq/mediatek-cpufreq.c
> > index 472f4de29e5f..1369da62780a 100644
> > --- a/drivers/cpufreq/mediatek-cpufreq.c
> > +++ b/drivers/cpufreq/mediatek-cpufreq.c
>
> ..snip..
>
> > +
> > static int mtk_cpu_dvfs_info_init(struct mtk_cpu_dvfs_info *info,
> > int cpu)
> > {
> > struct device *cpu_dev;
> > @@ -392,6 +455,17 @@ static int mtk_cpu_dvfs_info_init(struct
> > mtk_cpu_dvfs_info *info, int cpu)
> > info->intermediate_voltage = dev_pm_opp_get_voltage(opp);
> > dev_pm_opp_put(opp);
> >
> > + info->opp_cpu = cpu;
> > + info->opp_nb.notifier_call = mtk_cpufreq_opp_notifier;
> > + ret = dev_pm_opp_register_notifier(cpu_dev, &info->opp_nb);
>
> You are registering this notifier, but never unregistering it.
> Please unregister it in error conditions and also upon runtime
> removal of the
> mediatek-cpufreq module.
>
> -> dev_pm_opp_unregister_notifier()
>
> Regards,
> Angelo
Hello Angelo,
Thanks for your review.
I will add this inside mtk_cpu_dvfs_info_release() in next version.
BRs,
Rex
>
> > + if (ret) {
> > + dev_warn(cpu_dev, "cpu%d: failed to register opp
> > notifier\n", cpu);
> > + goto out_disable_inter_clock;
> > + }
> > +
> > + mutex_init(&info->reg_lock);
> > + info->opp_freq = clk_get_rate(info->cpu_clk);
> > +
> > /*
> > * If SRAM regulator is present, software "voltage tracking" is
> > needed
> > * for this CPU power domain.
>
>
More information about the linux-arm-kernel
mailing list