public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: tip-bot for Magnus Damm <magnus.damm@gmail.com>
To: linux-tip-commits@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, hpa@zytor.com, mingo@redhat.com,
	damm@igel.co.jp, tglx@linutronix.de, magnus.damm@gmail.com
Subject: [tip:timers/clocksource] clocksource: setup mult_orig in clocksource_enable()
Date: Sat, 2 May 2009 09:48:30 GMT	[thread overview]
Message-ID: <tip-a25cbd045a2ffc42787d4dbcbb9c7118f5f42732@git.kernel.org> (raw)
In-Reply-To: <20090501054546.8193.10688.sendpatchset@rx1.opensource.se>

Commit-ID:  a25cbd045a2ffc42787d4dbcbb9c7118f5f42732
Gitweb:     http://git.kernel.org/tip/a25cbd045a2ffc42787d4dbcbb9c7118f5f42732
Author:     Magnus Damm <magnus.damm@gmail.com>
AuthorDate: Fri, 1 May 2009 14:45:46 +0900
Committer:  Thomas Gleixner <tglx@linutronix.de>
CommitDate: Sat, 2 May 2009 11:45:15 +0200

clocksource: setup mult_orig in clocksource_enable()

Setup clocksource mult_orig in clocksource_enable().

Clocksource drivers can save power by using keeping the
device clock disabled while the clocksource is unused.

In practice this means that the enable() and disable()
callbacks perform clk_enable() and clk_disable().

The enable() callback may also use clk_get_rate() to get
the clock rate from the clock framework. This information
can then be used to calculate the shift and mult variables.

Currently the mult_orig variable is setup from mult at
registration time only. This is conflicting with the above
case since the clock is disabled and the mult variable is
not yet calculated at the time of registration.

Moving the mult_orig setup code to clocksource_enable()
allows us to both handle the common case with no enable()
callback and the mult-changed-after-enable() case.

[ Impact: allow dynamic clock source usage ]

Signed-off-by: Magnus Damm <damm@igel.co.jp>
LKML-Reference: <20090501054546.8193.10688.sendpatchset@rx1.opensource.se>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>


---
 include/linux/clocksource.h |   10 +++++++++-
 kernel/time/clocksource.c   |    3 ---
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/include/linux/clocksource.h b/include/linux/clocksource.h
index 5a40d14..c56457c 100644
--- a/include/linux/clocksource.h
+++ b/include/linux/clocksource.h
@@ -288,7 +288,15 @@ static inline cycle_t clocksource_read(struct clocksource *cs)
  */
 static inline int clocksource_enable(struct clocksource *cs)
 {
-	return cs->enable ? cs->enable(cs) : 0;
+	int ret = 0;
+
+	if (cs->enable)
+		ret = cs->enable(cs);
+
+	/* save mult_orig on enable */
+	cs->mult_orig = cs->mult;
+
+	return ret;
 }
 
 /**
diff --git a/kernel/time/clocksource.c b/kernel/time/clocksource.c
index ecfd7b5..80189f6 100644
--- a/kernel/time/clocksource.c
+++ b/kernel/time/clocksource.c
@@ -402,9 +402,6 @@ int clocksource_register(struct clocksource *c)
 	unsigned long flags;
 	int ret;
 
-	/* save mult_orig on registration */
-	c->mult_orig = c->mult;
-
 	spin_lock_irqsave(&clocksource_lock, flags);
 	ret = clocksource_enqueue(c);
 	if (!ret)

  reply	other threads:[~2009-05-02  9:49 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-01  5:45 [PATCH] clocksource: setup mult_orig in clocksource_enable() Magnus Damm
2009-05-02  9:48 ` tip-bot for Magnus Damm [this message]
2009-06-10 21:04 ` john stultz
2009-06-11  5:51   ` Magnus Damm
2009-06-12 23:56     ` john stultz
2009-06-14 10:20       ` Magnus Damm
2009-06-15 19:08         ` john stultz
2009-06-15 20:04           ` Paul Mundt
2009-06-15 21:55             ` john stultz
2009-06-16  2:42           ` john stultz

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=tip-a25cbd045a2ffc42787d4dbcbb9c7118f5f42732@git.kernel.org \
    --to=magnus.damm@gmail.com \
    --cc=damm@igel.co.jp \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=tglx@linutronix.de \
    /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