On Tue, Jun 7, 2011 at 16:49, Kevin Hilman <khilman@xxxxxx> wrote: > Nishanth Menon <nm@xxxxxx> writes: > >> Since we do module_init, cpufreq initializes before power late_init >> where many of the required data structures are registered. > > What exactly are the dependencies here? The only thing I see is the > dependency on omap2_get_mpuss_device(), and those devices should be > created as a postcore_initcall. > > If there are other dependencies, they're probably created a side effect > of your earlier patches where you moved stuff from the ->init hook > (which happens much later) into the initcall function. Maybe that needs > a rethink? > >> Move cpufreq init to late_initcall instead. Further CONFIG_CPU_FREQ on >> which the build depends is bool and does'nt support modules yet. >> >> Signed-off-by: Nishanth Menon <nm@xxxxxx> > > If this works, it's only because of the link order defined by the > Makefile ordering since both are the same level of initcall. > > When I move this driver to drivers/cpufreq, then the link order is less > obvious. the issue is as follows: currently we dont do voltage transitions. when we do that eventually(and my current code has an forked implementation of dvfs, the following steps happen): late_initcall(omap2_common_pm_late_init); does pmic inits, omap_voltage_late_init, init_voltages and SR dev initialization without these, there is no way to transition MPU to proper voltage, frequency combination. The requirement will have to be that omap2-cpufreq.c allows for cpufreq transitions only after voltage and clk layers are ready for transitions - if we ever want to do dvfs - which we will eventually need to. Regards, Nishanth Menon > > Kevin > >> --- >> arch/arm/mach-omap2/omap2plus-cpufreq.c | 2 +- >> 1 files changed, 1 insertions(+), 1 deletions(-) >> >> diff --git a/arch/arm/mach-omap2/omap2plus-cpufreq.c b/arch/arm/mach-omap2/omap2plus-cpufreq.c >> index 2177381..07c2ab9 100644 >> --- a/arch/arm/mach-omap2/omap2plus-cpufreq.c >> +++ b/arch/arm/mach-omap2/omap2plus-cpufreq.c >> @@ -273,5 +273,5 @@ static void __exit omap_cpufreq_exit(void) >> >> MODULE_DESCRIPTION("cpufreq driver for OMAP2PLUS SOCs"); >> MODULE_LICENSE("GPL"); >> -module_init(omap_cpufreq_init); >> +late_initcall(omap_cpufreq_init); >> module_exit(omap_cpufreq_exit); > -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html