* [PATCH 3/4] ARM: smp_twd: get the rate from a clock
@ 2011-12-12 9:57 Linus Walleij
2011-12-12 13:46 ` Russell King - ARM Linux
2011-12-13 5:24 ` Santosh Shilimkar
0 siblings, 2 replies; 5+ messages in thread
From: Linus Walleij @ 2011-12-12 9:57 UTC (permalink / raw)
To: linux-arm-kernel
From: Linus Walleij <linus.walleij@linaro.org>
This break-out from Colin Cross' cpufreq-aware TWD patch will
optionally retrieve the clock rate of the TWD from an external
clock. A variant of this patch has been proposed by Rob Herring
as well.
The basic idea is to avoid recalibrating the rate of the clock
at boot if the platform already know what rate the clock to the
TWD block has.
Signed-off-by: Colin Cross <ccross@android.com>
Cc: Russell King <linux@arm.linux.org.uk>
Acked-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Rob Herring <rob.herring@calxeda.com>
Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
[Broke out of larger SMP TWD patch]
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
arch/arm/kernel/smp_twd.c | 32 +++++++++++++++++++++++++++++++-
1 files changed, 31 insertions(+), 1 deletions(-)
diff --git a/arch/arm/kernel/smp_twd.c b/arch/arm/kernel/smp_twd.c
index 20cce4e..a13e1c0 100644
--- a/arch/arm/kernel/smp_twd.c
+++ b/arch/arm/kernel/smp_twd.c
@@ -10,8 +10,10 @@
*/
#include <linux/init.h>
#include <linux/kernel.h>
+#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/device.h>
+#include <linux/err.h>
#include <linux/smp.h>
#include <linux/jiffies.h>
#include <linux/clockchips.h>
@@ -26,6 +28,7 @@
/* set up by the platform code */
void __iomem *twd_base;
+static struct clk *twd_clk;
static unsigned long twd_timer_rate;
static DEFINE_PER_CPU(struct clock_event_device *, twd_ce);
@@ -142,6 +145,27 @@ static irqreturn_t twd_handler(int irq, void *dev_id)
return IRQ_NONE;
}
+static struct clk *twd_get_clock(void)
+{
+ struct clk *clk;
+ int err;
+
+ clk = clk_get_sys("smp_twd", NULL);
+ if (IS_ERR(clk)) {
+ pr_err("smp_twd: clock not found: %d\n", (int)PTR_ERR(clk));
+ return clk;
+ }
+
+ err = clk_enable(clk);
+ if (err) {
+ pr_err("smp_twd: clock failed to enable: %d\n", err);
+ clk_put(clk);
+ return ERR_PTR(err);
+ }
+
+ return clk;
+}
+
/*
* Setup the local clock events for a CPU.
*/
@@ -167,7 +191,13 @@ void __cpuinit twd_timer_setup(struct clock_event_device *clk)
}
}
- twd_calibrate_rate();
+ if (!twd_clk)
+ twd_clk = twd_get_clock();
+
+ if (!IS_ERR_OR_NULL(twd_clk))
+ twd_timer_rate = clk_get_rate(twd_clk);
+ else
+ twd_calibrate_rate();
clk->name = "local_timer";
clk->features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT |
--
1.7.3.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 3/4] ARM: smp_twd: get the rate from a clock
2011-12-12 9:57 [PATCH 3/4] ARM: smp_twd: get the rate from a clock Linus Walleij
@ 2011-12-12 13:46 ` Russell King - ARM Linux
2011-12-13 5:24 ` Santosh Shilimkar
1 sibling, 0 replies; 5+ messages in thread
From: Russell King - ARM Linux @ 2011-12-12 13:46 UTC (permalink / raw)
To: linux-arm-kernel
On Mon, Dec 12, 2011 at 10:57:27AM +0100, Linus Walleij wrote:
> +static struct clk *twd_get_clock(void)
> +{
> + struct clk *clk;
> + int err;
> +
> + clk = clk_get_sys("smp_twd", NULL);
> + if (IS_ERR(clk)) {
> + pr_err("smp_twd: clock not found: %d\n", (int)PTR_ERR(clk));
> + return clk;
> + }
> +
> + err = clk_enable(clk);
> + if (err) {
> + pr_err("smp_twd: clock failed to enable: %d\n", err);
> + clk_put(clk);
> + return ERR_PTR(err);
> + }
NAK. No clk_prepare().
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 3/4] ARM: smp_twd: get the rate from a clock
2011-12-12 9:57 [PATCH 3/4] ARM: smp_twd: get the rate from a clock Linus Walleij
2011-12-12 13:46 ` Russell King - ARM Linux
@ 2011-12-13 5:24 ` Santosh Shilimkar
2011-12-13 8:17 ` Russell King - ARM Linux
1 sibling, 1 reply; 5+ messages in thread
From: Santosh Shilimkar @ 2011-12-13 5:24 UTC (permalink / raw)
To: linux-arm-kernel
Linus,
On Monday 12 December 2011 03:27 PM, Linus Walleij wrote:
> From: Linus Walleij <linus.walleij@linaro.org>
>
> This break-out from Colin Cross' cpufreq-aware TWD patch will
> optionally retrieve the clock rate of the TWD from an external
> clock. A variant of this patch has been proposed by Rob Herring
> as well.
>
> The basic idea is to avoid recalibrating the rate of the clock
> at boot if the platform already know what rate the clock to the
> TWD block has.
>
> Signed-off-by: Colin Cross <ccross@android.com>
> Cc: Russell King <linux@arm.linux.org.uk>
> Acked-by: Thomas Gleixner <tglx@linutronix.de>
> Acked-by: Rob Herring <rob.herring@calxeda.com>
> Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
> [Broke out of larger SMP TWD patch]
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
> ---
> arch/arm/kernel/smp_twd.c | 32 +++++++++++++++++++++++++++++++-
> 1 files changed, 31 insertions(+), 1 deletions(-)
>
> diff --git a/arch/arm/kernel/smp_twd.c b/arch/arm/kernel/smp_twd.c
> index 20cce4e..a13e1c0 100644
> --- a/arch/arm/kernel/smp_twd.c
> +++ b/arch/arm/kernel/smp_twd.c
> @@ -10,8 +10,10 @@
> */
> #include <linux/init.h>
> #include <linux/kernel.h>
> +#include <linux/clk.h>
> #include <linux/delay.h>
> #include <linux/device.h>
> +#include <linux/err.h>
> #include <linux/smp.h>
> #include <linux/jiffies.h>
> #include <linux/clockchips.h>
> @@ -26,6 +28,7 @@
> /* set up by the platform code */
> void __iomem *twd_base;
>
> +static struct clk *twd_clk;
> static unsigned long twd_timer_rate;
> static DEFINE_PER_CPU(struct clock_event_device *, twd_ce);
>
> @@ -142,6 +145,27 @@ static irqreturn_t twd_handler(int irq, void *dev_id)
> return IRQ_NONE;
> }
>
> +static struct clk *twd_get_clock(void)
> +{
> + struct clk *clk;
> + int err;
> +
> + clk = clk_get_sys("smp_twd", NULL);
As noticed by Mike, would be better to use con_id instead
of dev_id here. I mean,
clk = clk_get_sys(NULL, "smp_twd");
The OMAP4 clock node patch thinking you have used
con_id to get the twd clock node.
Let me know your plan to change it or keep it as is.
Regards
Santosh
Let me know if you plan to change as above or
retain
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 3/4] ARM: smp_twd: get the rate from a clock
2011-12-13 5:24 ` Santosh Shilimkar
@ 2011-12-13 8:17 ` Russell King - ARM Linux
2011-12-13 8:46 ` Shilimkar, Santosh
0 siblings, 1 reply; 5+ messages in thread
From: Russell King - ARM Linux @ 2011-12-13 8:17 UTC (permalink / raw)
To: linux-arm-kernel
On Tue, Dec 13, 2011 at 10:54:14AM +0530, Santosh Shilimkar wrote:
> > +static struct clk *twd_get_clock(void)
> > +{
> > + struct clk *clk;
> > + int err;
> > +
> > + clk = clk_get_sys("smp_twd", NULL);
>
> As noticed by Mike, would be better to use con_id instead
> of dev_id here. I mean,
> clk = clk_get_sys(NULL, "smp_twd");
Why? It makes more sense for a device ID to be passed for this.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 3/4] ARM: smp_twd: get the rate from a clock
2011-12-13 8:17 ` Russell King - ARM Linux
@ 2011-12-13 8:46 ` Shilimkar, Santosh
0 siblings, 0 replies; 5+ messages in thread
From: Shilimkar, Santosh @ 2011-12-13 8:46 UTC (permalink / raw)
To: linux-arm-kernel
On Tue, Dec 13, 2011 at 1:47 PM, Russell King - ARM Linux
<linux@arm.linux.org.uk> wrote:
> On Tue, Dec 13, 2011 at 10:54:14AM +0530, Santosh Shilimkar wrote:
>> > +static struct clk *twd_get_clock(void)
>> > +{
>> > + ? struct clk *clk;
>> > + ? int err;
>> > +
>> > + ? clk = clk_get_sys("smp_twd", NULL);
>>
>> As noticed by Mike, would be better to use con_id instead
>> of dev_id here. I mean,
>> clk = clk_get_sys(NULL, "smp_twd");
>
> Why? ?It makes more sense for a device ID to be passed for this.
Sorry. I assumed clk_get_sys() signature same as clk_get(). And then
thought dev pointer and con_id is the right way to go about it.
Since clk_get_sys() directly takes dev_id, it should be fine.
Will update OMAP clock-node patch accordingly.
Regards
Santosh
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2011-12-13 8:46 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-12-12 9:57 [PATCH 3/4] ARM: smp_twd: get the rate from a clock Linus Walleij
2011-12-12 13:46 ` Russell King - ARM Linux
2011-12-13 5:24 ` Santosh Shilimkar
2011-12-13 8:17 ` Russell King - ARM Linux
2011-12-13 8:46 ` Shilimkar, Santosh
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).