From: shiraz.hashim@st.com (Shiraz Hashim)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH V4 38/62] SPEAr CPU freq: Adding support for CPU Freq framework
Date: Wed, 19 Jan 2011 15:09:42 +0530 [thread overview]
Message-ID: <20110119093942.GC8048@DLHLAP0379> (raw)
In-Reply-To: <20110119090008.GA8048@DLHLAP0379>
Hi Jamie,
On Wed, Jan 19, 2011 at 02:30:08PM +0530, Shiraz Hashim wrote:
> Hi James,
>
> On Wed, Jan 19, 2011 at 04:35:27PM +0800, Jamie Iles wrote:
> > On Wed, Jan 19, 2011 at 07:43:05AM +0530, deepaksi wrote:
> > > Hi James,
> > >
> > > On 1/19/2011 5:50 AM, Jamie Iles wrote:
> > > >> +static int spear_cpufreq_target(struct cpufreq_policy *policy,
> > > >> + unsigned int target_freq, unsigned int relation)
> > > >> +{
> > > >> + struct cpufreq_freqs freqs;
> > > >> + int ret = 0;
> > > >> + int index;
> > > >> +
> > > >> + if (policy->cpu != 0)
> > > >> + return -EINVAL;
> > > >> +
> > > >> + if (cpufreq_frequency_table_target(policy, spear_freq_tbl,
> > > >> + target_freq, relation, &index))
> > > >> + return -EINVAL;
> > > >> +
> > > >> + freqs.old = spear_cpufreq_get(0);
> > > >> + freqs.new = spear_cpu_freq[index];
> > > >> + freqs.cpu = policy->cpu;
> > > >> +
> > > >> + if (freqs.old == target_freq)
> > > >> + return 0;
> > > >> +
> > > >> + cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
> > > >> + ret = clk_set_rate(cpu_clk, freqs.new * 1000);
> > > >> + cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
> > > >>
> > > > If clk_set_rate() failed then do you need to do freqs.new =
> > > > clk_get_rate(cpu_clk) before doing the CPUFREQ_POSTCHANGE to make sure you
> > > > don't notify the wrong frequency?
> > > >
> > > >
> > > I do have a point over here. In few of the drivers where the the pre
> > > notifiers have been added, the operations have been stopped (assume a
> > > network driver where we stalled a dma operation), and then we set the
> > > clock rate, followed by a post notifier where driver resumes it operations.
> > >
> > > Now lets take the case, when the clock set rate fails ( Most failure
> > > could only be when the driver is unable to find any clock rate which is
> > > less then/equal to requested rate) .
> > > The post transition notifier should happen so as to allow the driver to
> > > resume its functions. If there are no clock rate changes because of set
> > > rate failures, the driver would be aware of that by using calls such as
> > > clk_get_rate, and would carry forward it's operations accordingly.
> > >
> > > How do you suggest to go about it ?
> >
> > Sorry, I didn't mean to remove the post notifier, just do something like:
> >
> > cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
> > ret = clk_set_rate(cpu_clk, freqs.new * 1000);
> > if (ret)
> > freqs.new = clk_get_rate(cpu_clk);
> > cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
> >
> > Or:
> >
> > cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
> > ret = clk_set_rate(cpu_clk, freqs.new * 1000);
> > if (ret)
> > freqs.new = freqs.old;
> > cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
> >
> > So that you're notifying the cpufreq subsystem of the frequency that you're
> > actually running at with the post change notifier rather than the one you
> > tried to go for. If you don't do this then for UP you'll end up recaculating
> > lpj based on the wrong frequency.
>
> Agree. We would add it here. Thanks for pointing out.
On second thought it should always be there irrespective of failures
as in our case it may happen that eventually CPU sets to a clock <=
desired clock. So we would do following
cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
ret = clk_set_rate(cpu_clk, freqs.new * 1000);
if (ret)
pr_err("Could not change cpu clk rate\n");
freqs.new = clk_get_rate(cpu_clk);
cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
Is it fine?
--
regards
Shiraz
next prev parent reply other threads:[~2011-01-19 9:39 UTC|newest]
Thread overview: 90+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-18 7:11 [PATCH V4 00/62] Updating SPEAr Support Viresh Kumar
2011-01-18 7:11 ` [PATCH V4 01/62] spear/vmalloc.h: Appending UL to VMALLOC_END Viresh Kumar
2011-01-18 7:11 ` [PATCH V4 02/62] sp810 Fix: Switch to slow mode before sysctl_soft_reset Viresh Kumar
2011-01-18 7:11 ` [PATCH V4 03/62] ST SPEAr: Padmux code Updated Viresh Kumar
2011-01-18 7:11 ` [PATCH V4 04/62] ST SPEAr: Making clock functions more generic Viresh Kumar
2011-01-18 15:56 ` Russell King - ARM Linux
2011-01-19 4:03 ` viresh kumar
2011-01-18 7:11 ` [PATCH V4 05/62] ST SPEAr: Formalized timer support Viresh Kumar
2011-01-18 23:50 ` Jamie Iles
2011-01-19 3:53 ` viresh kumar
2011-01-18 7:11 ` [PATCH V4 06/62] ST SPEAr13XX: Adding machine specific header files Viresh Kumar
2011-01-18 16:00 ` Russell King - ARM Linux
2011-01-19 4:38 ` viresh kumar
2011-01-19 9:02 ` viresh kumar
2011-01-18 7:11 ` [PATCH V4 07/62] ST SPEAr13XX: Adding machine specific src files Viresh Kumar
2011-01-18 16:06 ` Russell King - ARM Linux
2011-01-19 6:03 ` Shiraz Hashim
2011-01-19 8:52 ` Russell King - ARM Linux
2011-01-19 9:20 ` Shiraz Hashim
2011-01-18 7:11 ` [PATCH V4 08/62] ST SPEAr: Adding support for SPEAr13xx SoC in spear generic plat/ Viresh Kumar
2011-01-18 7:11 ` [PATCH V4 09/62] ST SPEAr13XX: Added compilation support in arch/arm/ Viresh Kumar
2011-01-18 7:11 ` [PATCH V4 10/62] ST SPEAr13xx: Adding default config file Viresh Kumar
2011-01-18 7:11 ` [PATCH V4 11/62] ST SPEAr: Adding support for CLCD on SPEAr3xx/6xx Viresh Kumar
2011-01-18 7:11 ` [PATCH V4 12/62] ST SPEAr: Updating Clock Support Viresh Kumar
2011-01-18 7:11 ` [PATCH V4 13/62] ST SPEAr: Adding Debugfs support on clock framework Viresh Kumar
2011-01-18 7:11 ` [PATCH V4 14/62] ST SPEAr: Correcting SOC Config base address for spear320 Viresh Kumar
2011-01-18 7:11 ` [PATCH V4 15/62] ST SPEAr: Adding PLGPIO driver for spear platform Viresh Kumar
2011-01-18 7:11 ` [PATCH V4 17/62] ST SPEAr: Adding machine support for rtc-spear Viresh Kumar
2011-01-18 7:11 ` [PATCH V4 18/62] ST SPEAr: adding support for synopsis i2c designware Viresh Kumar
2011-01-18 7:11 ` [PATCH V4 19/62] ST SPEAr: Adding machine support for USB host Viresh Kumar
2011-01-18 7:11 ` [PATCH V4 20/62] ST SPEAr: Adding machine support for keyboard Viresh Kumar
2011-01-18 7:11 ` [PATCH V4 21/62] ST SPEAr: Added ARM PL061 GPIO Support on SPEAr13xx and modified resource size Viresh Kumar
2011-01-18 7:11 ` [PATCH V4 22/62] ST SPEAr: Adding support for ST's PWM IP Viresh Kumar
2011-01-18 7:11 ` [PATCH V4 23/62] ST SPEAr: Adding Watchdog support Viresh Kumar
2011-01-18 7:11 ` [PATCH V4 24/62] ST SPEAr: Adding machine support for nand Viresh Kumar
2011-01-18 7:11 ` [PATCH V4 25/62] ST SPEAr: Added PCIE host controller base driver support Viresh Kumar
2011-01-19 0:05 ` Russell King - ARM Linux
2011-01-19 4:17 ` viresh kumar
2011-01-18 7:11 ` [PATCH V4 26/62] ST SPEAr: Adding support for SSP PL022 Viresh Kumar
2011-01-18 16:18 ` Russell King - ARM Linux
2011-01-19 4:16 ` viresh kumar
2011-01-18 7:11 ` [PATCH V4 27/62] ST SPEAr: Adding support for SDHCI (SDIO) Viresh Kumar
2011-01-18 7:11 ` [PATCH V4 28/62] ST SPEAr: Changing resource size of amba devices to SZ_4K Viresh Kumar
2011-01-18 7:11 ` [PATCH V4 29/62] ST SPEAr: Replacing SIZE macro's with actual required size Viresh Kumar
2011-01-18 7:11 ` [PATCH V4 30/62] SPEAr: defines base addresses as ulong Viresh Kumar
2011-01-18 7:11 ` [PATCH V4 31/62] ST SPEAr: Adding miscellaneous devices Viresh Kumar
2011-01-18 7:11 ` [PATCH V4 32/62] ST SPEAr 13xx : Adding support for SPEAr1310 Viresh Kumar
2011-01-19 0:09 ` Jamie Iles
2011-01-19 4:39 ` viresh kumar
2011-01-19 6:40 ` viresh kumar
2011-01-19 8:29 ` Jamie Iles
2011-01-18 7:12 ` [PATCH V4 33/62] SPEAr320: Adding support for CAN Viresh Kumar
2011-01-18 7:12 ` [PATCH V4 34/62] ST SPEAr: Adding support for DDR in clock framework Viresh Kumar
2011-01-18 7:12 ` [PATCH V4 35/62] ST SPEAr : EMI (Extrenal Memory Interface) controller driver Viresh Kumar
2011-01-18 7:12 ` [PATCH V4 36/62] SPEAr Clock Framework: Adding support for PLL frequency change Viresh Kumar
2011-01-18 7:12 ` [PATCH V4 37/62] SPEAr Power Management: Added the support for Standby mode Viresh Kumar
2011-01-18 7:12 ` [PATCH V4 38/62] SPEAr CPU freq: Adding support for CPU Freq framework Viresh Kumar
2011-01-19 0:20 ` Jamie Iles
2011-01-19 2:13 ` deepaksi
2011-01-19 8:35 ` Jamie Iles
2011-01-19 9:00 ` Shiraz Hashim
2011-01-19 9:39 ` Shiraz Hashim [this message]
2011-01-19 9:53 ` Russell King - ARM Linux
2011-01-19 11:14 ` viresh kumar
2011-01-18 7:12 ` [PATCH V4 39/62] ST SPEAr13xx: Adding CPU hotplug support added for SMP platforms Viresh Kumar
2011-01-18 7:12 ` [PATCH V4 40/62] ST SPEAr: replace readl, writel with readl_relaxed, writel_relaxed in uncompress.h Viresh Kumar
2011-01-18 7:12 ` [PATCH V4 41/62] ST SPEAr13xx: add L2 cache support Viresh Kumar
2011-01-18 7:12 ` [PATCH V4 42/62] ST SPEAr13xx: Modified static mappings Viresh Kumar
2011-01-18 7:12 ` [PATCH V4 43/62] SPEAr1310: Adding Static Mapping for RAS Area Viresh Kumar
2011-01-18 7:12 ` [PATCH V4 44/62] SPEAr: Adding and Updating Clock definitions Viresh Kumar
2011-01-18 7:12 ` [PATCH V4 45/62] SPEAr : Pad multiplexing handling modified Viresh Kumar
2011-01-18 7:12 ` [PATCH V4 46/62] SPEAr13xx : Fixed part devices in SPEAr13xx addded to the generic implementation Viresh Kumar
2011-01-18 7:12 ` [PATCH V4 47/62] SPEAr : Updating pad multiplexing support Viresh Kumar
2011-01-18 7:12 ` [PATCH V4 48/62] ST SPEAr3xx: Passing pmx devices address from machine *.c files Viresh Kumar
2011-01-18 7:12 ` [PATCH V4 49/62] ST SPEAr Clock Framework: Updating for single image solution Viresh Kumar
2011-01-18 7:12 ` [PATCH V4 50/62] SPEAr3xx: Make local structures static Viresh Kumar
2011-01-18 7:12 ` [PATCH V4 51/62] SPEAR3xx: Rename register/irq defines to remove naming conflicts Viresh Kumar
2011-01-18 7:12 ` [PATCH V4 52/62] SPEAr3xx: Rework pmx_dev code to remove conflicts Viresh Kumar
2011-01-18 7:12 ` [PATCH V4 53/62] SPEAr3xx: Rework KConfig to allow all boards to be compiled in Viresh Kumar
2011-01-18 7:12 ` [PATCH V4 54/62] SPEAr3xx: Replace defconfigs with single unified defconfig Viresh Kumar
2011-01-18 7:12 ` [PATCH V4 55/62] ST SPEAr: Appending spear3** with global structures Viresh Kumar
2011-01-18 7:12 ` [PATCH V4 56/62] ST SPEAr3xx: Updating plgpio and emi source to make it compliant with single image strategy Viresh Kumar
2011-01-18 7:12 ` [PATCH V4 57/62] SPEAr6xx: Rework Kconfig for single image solution Viresh Kumar
2011-01-18 7:12 ` [PATCH V4 58/62] ST SPEAR6xx: renaming spear600_defconfig as spear6xx_defconfig Viresh Kumar
2011-01-18 7:12 ` [PATCH V4 59/62] ST SPEAr13xx: Pass default padmux settings as parameter to spear13**_init routine Viresh Kumar
2011-01-18 7:12 ` [PATCH V4 60/62] ST SPEAr: Adding devices & clocks Viresh Kumar
2011-01-18 7:12 ` [PATCH V4 61/62] ST SPEAr: Adding information in Documentation/ and MAINTAINERS Viresh Kumar
2011-01-18 7:12 ` [PATCH V4 62/62] ST SPEAr: Updating defconfigs Viresh Kumar
2011-01-18 15:53 ` [PATCH V4 00/62] Updating SPEAr Support Russell King - ARM Linux
2011-01-19 3:49 ` viresh kumar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20110119093942.GC8048@DLHLAP0379 \
--to=shiraz.hashim@st.com \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).