> -----Original Message----- > From: Viresh Kumar <viresh.kumar@xxxxxxxxxx> > Sent: Wednesday, May 23, 2018 14:31 > To: Ilia Lin <ilialin@xxxxxxxxxxxxxx> > Cc: Sudeep Holla <sudeep.holla@xxxxxxx>; Viresh Kumar > <vireshk@xxxxxxxxxx>; Nishanth Menon <nm@xxxxxx>; Stephen Boyd > <sboyd@xxxxxxxxxx>; Rob Herring <robh@xxxxxxxxxx>; Mark Rutland > <mark.rutland@xxxxxxx>; Rafael J. Wysocki <rjw@xxxxxxxxxxxxx>; linux- > pm@xxxxxxxxxxxxxxx; devicetree@xxxxxxxxxxxxxxx; Linux Kernel Mailing List > <linux-kernel@xxxxxxxxxxxxxxx> > Subject: Re: [PATCH v10 1/2] cpufreq: Add Kryo CPU scaling driver > > On 23 May 2018 at 16:36, <ilialin@xxxxxxxxxxxxxx> wrote: > > > > > >> -----Original Message----- > >> From: Sudeep Holla <sudeep.holla@xxxxxxx> > >> Sent: Wednesday, May 23, 2018 13:40 > >> To: Ilia Lin <ilialin@xxxxxxxxxxxxxx>; vireshk@xxxxxxxxxx; nm@xxxxxx; > >> sboyd@xxxxxxxxxx; robh@xxxxxxxxxx; mark.rutland@xxxxxxx; > >> rjw@xxxxxxxxxxxxx; linux-pm@xxxxxxxxxxxxxxx; > >> devicetree@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx > >> Cc: Sudeep Holla <sudeep.holla@xxxxxxx> > >> Subject: Re: [PATCH v10 1/2] cpufreq: Add Kryo CPU scaling driver > >> > >> > >> > >> On 23/05/18 10:40, Ilia Lin wrote: > >> > In Certain QCOM SoCs like apq8096 and msm8996 that have KRYO > >> > processors, the CPU frequency subset and voltage value of each OPP > >> > varies based on the silicon variant in use. Qualcomm Process > >> > Voltage Scaling Tables defines the voltage and frequency value > >> > based on the msm-id in SMEM and speedbin blown in the efuse > combination. > >> > The qcom-cpufreq-kryo driver reads the msm-id and efuse value from > >> > the SoC to provide the OPP framework with required information. > >> > This is used to determine the voltage and frequency value for each > >> > OPP of > >> > operating-points-v2 table when it is parsed by the OPP framework. > >> > > >> > Signed-off-by: Ilia Lin <ilialin@xxxxxxxxxxxxxx> > >> > >> [...] > >> > >> > + pdev = platform_device_register_simple("cpufreq-dt", -1, NULL, 0); > >> > + if (!IS_ERR(pdev)) > >> > + return 0; > >> > + > >> > + ret = PTR_ERR(pdev); > >> > + dev_err(cpu_dev, "Failed to register platform device\n"); > >> > + > >> > +free_opp: > >> > + for_each_possible_cpu(cpu) { > >> > + if (IS_ERR_OR_NULL(opp_tables[cpu])) > >> > + break; > >> > + dev_pm_opp_put_supported_hw(opp_tables[cpu]); > >> > + } > >> > +free_np: > >> > + of_node_put(np); > >> > + > >> > + return ret; > >> > +} > >> > +late_initcall(qcom_cpufreq_kryo_driver_init); > >> > >> Any particular reason why this *has* to be late initcall ? > >> Please change it to module_initcall otherwise. > > > > The purpose is to give the cpufreq-dt the time to register the driver and > only then my driver will add the platform device. > > That isn't required, the device and its driver can be registered in any order. You are right. I already checked that in the code... However, with module_init() the driver fails on reading the nvmem. -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html