> -----Original Message----- > From: Kahn, Gery [mailto:geryk@xxxxxx] > Sent: Monday, February 14, 2011 3:04 PM > To: Vishwanath BS > Cc: linux-omap@xxxxxxxxxxxxxxx; patches@xxxxxxxxxx; Santosh Shilimkar > Subject: Re: [PATCH 08/13] OMAP3: cpufreq driver changes for DVFS > support > > Dear Vishwanath, > > On Fri, Jan 21, 2011 at 16:01, Vishwanath BS <vishwanath.bs@xxxxxx> > wrote: > > Changes in the omap cpufreq driver for DVFS support. > > > > Signed-off-by: Vishwanath BS <vishwanath.bs@xxxxxx> > > Cc: Santosh Shilimkar <santosh.shilimkar@xxxxxx> > > --- > > arch/arm/plat-omap/cpu-omap.c | 35 > ++++++++++++++++++++++++++++++++--- > > 1 files changed, 32 insertions(+), 3 deletions(-) > > > > diff --git a/arch/arm/plat-omap/cpu-omap.c b/arch/arm/plat- > omap/cpu-omap.c > > index 1c1b80b..d965220 100644 > > --- a/arch/arm/plat-omap/cpu-omap.c > > +++ b/arch/arm/plat-omap/cpu-omap.c > > @@ -30,10 +30,12 @@ > > #include <mach/hardware.h> > > #include <plat/clock.h> > > #include <asm/system.h> > > +#include <asm/cpu.h> > > > > #if defined(CONFIG_ARCH_OMAP3) && > !defined(CONFIG_OMAP_PM_NONE) > > #include <plat/omap-pm.h> > > #include <plat/common.h> > > +#include <plat/dvfs.h> > > #endif > > > > #define VERY_HI_RATE 900000000 > > @@ -85,11 +87,11 @@ static int omap_target(struct cpufreq_policy > *policy, > > unsigned int target_freq, > > unsigned int relation) > > { > > -#ifdef CONFIG_ARCH_OMAP1 > > struct cpufreq_freqs freqs; > > -#endif > > #if defined(CONFIG_ARCH_OMAP3) && > !defined(CONFIG_OMAP_PM_NONE) > > unsigned long freq; > > + int i; > > + struct cpufreq_freqs freqs_notify; > > struct device *mpu_dev = omap2_get_mpuss_device(); > > #endif > > int ret = 0; > > @@ -116,9 +118,36 @@ static int omap_target(struct cpufreq_policy > *policy, > > ret = clk_set_rate(mpu_clk, freqs.new * 1000); > > cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE); > > #elif defined(CONFIG_ARCH_OMAP3) && > !defined(CONFIG_OMAP_PM_NONE) > > + freqs.old = omap_getspeed(policy->cpu);; > > + freqs_notify.new = clk_round_rate(mpu_clk, target_freq * > 1000) / 1000; > > + freqs.cpu = policy->cpu; > > + > > + if (freqs.old == freqs.new) > > + return ret; > > + > > + /* pre notifiers */ > > + for_each_cpu(i, policy->cpus) { > > + freqs.cpu = i; > > + cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE); > > + } > > + > > + /* scale the frequency */ > > freq = target_freq * 1000; > > if (opp_find_freq_ceil(mpu_dev, &freq)) > > - omap_pm_cpu_set_freq(freq); > > + omap_device_scale(mpu_dev, mpu_dev, freq); > > + > > + /* Update loops per jiffy */ > > + freqs.new = omap_getspeed(policy->cpu); > > + for_each_cpu(i, policy->cpus) > > + per_cpu(cpu_data, i).loops_per_jiffy = > > + cpufreq_scale(per_cpu(cpu_data, i).loops_per_jiffy, > > + freqs.old, freqs.new); > > + > > + /* post notifiers */ > > + for_each_cpu(i, policy->cpus) { > > + freqs.cpu = i; > > + cpufreq_notify_transition(&freqs, > CPUFREQ_POSTCHANGE); > > + } > > #endif > > return ret; > > } > > -- > > 1.7.0.4 > > > > -- > > 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 > > > > I took those patches and applied to my .38-rc4 with help from Nishanth > Menon. > > There is problem appeared during compilation: > > arch/arm/plat-omap/cpu-omap.c:142: error: 'struct cpuinfo_arm' has no > member named 'loops_per_jiffy' > > My kernel is for Zoom3 board (OMAP3630-GP rev 2, CPU-OPP2 L3- > 200MHz) > Looking at the source, arch/arm/include/asm/cpu.h > loops_per_jiffy is under CONFIG_SMP and since the omap2plus_defconfig > builds for OMAP4 as well by default, I am guessing this bug was not > immediately visible... > > Is there solution for the issue? Yes this is an issue if CONFIG_SMP is disabled. We probably will need to put this code under #ifdef CONFIG_SMP till lpj is handled for SMP in generic cpufreq code itself . Vishwa > > Regards, > Gery -- 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